jQuery 类选择器和单击事件,我错过了啥吗?

Posted

技术标签:

【中文标题】jQuery 类选择器和单击事件,我错过了啥吗?【英文标题】: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>

【问题讨论】:

【参考方案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

【讨论】:

以上是关于jQuery 类选择器和单击事件,我错过了啥吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 onUpgrade 不起作用,我错过了啥吗?谢谢

我写了一个不工作的触发器。我错过了啥吗?

Nginx 位置指令似乎不起作用。我错过了啥吗?

用 puppeteer 更改 IP 地址似乎不起作用。我错过了啥吗?

git bisect 并找到最后一个好的提交 - 我错过了啥吗?

未发送有关可用应用更新的 Google Play 推送通知。我错过了啥吗?