2011-11-23 69 views
0

我對jQuery及其選擇器相當陌生。jQuery類選擇器和點擊事件,我錯過了什麼?

我有很多鏈接用於切換語言。語言存儲在languages變量中,當前語言索引(稱爲lang)存儲在document中。當我點擊一個鏈接時,它會正確更改(通過陣列循環),但任何其他鏈接保持不變。爲什麼? $('.lang')選擇應該選擇我的所有鏈接...

var languages = ['en', 'sl', 'at', 'de']; 
$(document).data('lang', 0); // Just for the first page load 

$('.lang').text(languages[($(document).data('lang'))]) 
    .attr('href', 'javascript:void(0)'); // Set href and text 

$('.lang').click(function() { 
    // Set link text to the current language and increment counter 
    $(this).text(languages[(($(document).data('lang') + 1) % languages.length)]); 
    $(document).data('lang', $(document).data('lang') + 1) 
}); 

<a class="lang"></a> 
<a class="lang"></a> 

回答

2

這是因爲在你點擊功能,你指的是this,即只有被點擊你需要

$('.lang').click(function() { 
    // Set link text to the current language and increment counter 
    $('.lang').text(languages[(($(document).data('lang') + 1) % languages.length)]); 
    $(document).data('lang', $(document).data('lang') + 1) 
}); 

如圖所示,當前鏈接在此的jsfiddle

http://jsfiddle.net/WhtqR/

你處於一個$('.lang')瓦特正確虐待選擇所有你的鏈接與該類。在您的代碼中,它將click功能應用於每個鏈接處理程序。但是,點擊時執行的功能需要標籤而不是this

+0

完美,謝謝你的時間! – gremo

相關問題