我有点击事件的问题;这是代码: jQuery的: $(document).ready(function() { $('.myClass').click(function() { alert($(.myClass).attr("iditem")); });}); HTML: div class="myClass" iditem="1" 1 /divdiv class="myClass" iditem="2" 2
jQuery的:
$(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时,警告打印始终为“1”(它似乎忽略了第二个DIV的声明).为什么.attr()没有为第二个DIV采用正确的值?
假设你有$(‘.myClass’).attr(“iditem”),这将始终返回集合中第一个元素的属性,如 documentation [docs] þ中所述:Get the value of an attribute for the first element in the set of matched elements.
因此,不是选择具有类myClass的所有元素(即$(‘.myClass’)所做的,无论在何处/何时调用它),您都希望获得对被点击元素的引用.简单地说:
$(this).attr('iditem');
这总是指事件处理程序绑定的元素.
我建议使用HTML5 data-*
attributes而不是自定义属性,以获得至少有效的HTML5:
<div class="myClass" data-item="1">
然后,您可以使用.data()
[docs]来检索该值.
þ:你真的应该阅读jQuery的文档.它提供了许多示例和每种方法如何工作的详细说明.确保您也了解selectors [docs]的工作原理.