【问题标题】:jQuery class selector and click event, am i missing something?jQuery 类选择器和单击事件,我错过了什么吗?
【发布时间】:2012-01-05 03:27:28
【问题描述】:

我对 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>

【问题讨论】:

    标签: jquery arrays jquery-selectors


    【解决方案1】:

    这是因为在你的点击功能中你引用了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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多