我对单击事件有问题;下面是代码:
查询:

$(document).ready(function() {
    $('.myClass').click(function() {
        alert($(.myClass).attr("iditem"));
    });
});

HTML格式:
<div class="myClass" iditem="1">
    1
</div>
<div class="myClass" iditem="2">
    2
</div>

两个具有相同类但相同属性值不同的DIV,当我单击一个DIV时,alert print总是“1”(它似乎忽略了secondDIV的声明)。为什么第二个.attr()的值不正确?

最佳答案

假设您有$('.myClass').attr("iditem"),它将始终返回集合中第一个元素的属性,如documentation 中所述:
获取匹配元素集中第一个元素的属性值。
因此,不要选择类为myClass的所有元素(这就是$('.myClass')的作用,无论它在哪里/何时被调用),而是希望获得对单击的元素的引用。简单地做:

$(this).attr('iditem');

this始终引用事件处理程序绑定到的元素。
我建议使用html5data-* attributes而不是自定义属性,至少要有有效的html5:
 <div class="myClass" data-item="1">

然后可以使用.data() 检索值。
:您真的应该阅读jquery的文档。它提供了许多示例和每个方法如何工作的详细描述。确保你也了解selectors 是如何工作的。

10-05 20:42
查看更多