我对单击事件有问题;下面是代码:
查询:
$(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
始终引用事件处理程序绑定到的元素。我建议使用html5
data-*
attributes而不是自定义属性,至少要有有效的html5: <div class="myClass" data-item="1">
然后可以使用
.data()
检索值。:您真的应该阅读jquery的文档。它提供了许多示例和每个方法如何工作的详细描述。确保你也了解selectors 是如何工作的。