2012-02-28 81 views
3

我有click事件的問題;下面的代碼:jQuery的。點擊():從得到的DIV屬性相同類別

的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正確的價值?

+0

缺失報價,也可以使用一個「本」 – footy 2012-02-28 12:04:27

回答

10

假設你有$('.myClass').attr("iditem"),這將始終返回第一元素的屬性中設定的,如documentation [docs] þ描述:

查看該屬性的值匹配元素集中的第一個元素。

因此,而不是選擇與myClass所有元素(這是$('.myClass')的確,無論在哪裏/在被調用時),你想要去點擊的元素的引用。簡單地做:

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

this總是指事件處理程序綁定到的元素。

我建議使用HTML5 data-* attributes,而不是自定義屬性的,至少有有效的HTML5:

<div class="myClass" data-item="1"> 

然後可以使用.data()[docs]檢索值。


þ:你真的應該閱讀jQuery的文檔。它提供了許多示例以及每種方法如何工作的詳細說明。確保你也瞭解selectors [docs]是如何工作的。

0

alert($(".myClass").attr("iditem"));

1

我假設你想顯示你點擊該項目的itemid的?然後,這個工程:

$('.myClass').click(function() { 
    alert($(this).attr("iditem")); 
}) 
0

$(".myClass")回報與類myClass的所有元素。我想你想這樣的事情,而不是:

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