2012-01-26 34 views
1

我目前正在搞jQuery中的.each()函數,我正在計算所有div的項目id並將它們添加到一個字符串中。jQuery。每個回調錯誤

問題是,我從jquery.com網站加載的jQuery源代碼中收到回調錯誤。

var items = ""; 
$('div.item').each(function(){ 
    items += $('this').data('id'); 
}); 

錯誤,如在螢火蟲上看到;

callback is undefined 
if (callback.call(object[ i ], i, object[ i++ ]) === false) { 
+0

好的工作對我來說:http://jsfiddle.net/jvnVA/ – JamesHalsall

回答

9

我懷疑這是不是每一個,它的。數據。您可能想要

items += $(this).data('id'); 

即使用this作爲變量而不是引用的字符串。

+0

不,我不想要獲得項目數據值。

但是如果它的工作原理相似,我可能只是用它來代替 – Flaashing

+0

對,我的意思是你在.data調用中遇到了錯誤,因爲$('this')不是作爲DOM元素被構造的瀏覽器 - 它被構造爲一個文本節點,並且嘗試在文本節點上調用「數據」失敗。你的錯誤是引用'this'。 – Rup

+0

哎喲...多麼尷尬......你說得對,我搞砸了'這個'......謝謝:) – Flaashing

3

問題是與你正在使用的。數據()方法:

var items = ""; 

$('div.item').each(function(){ 
    items += $(this).attr('id'); 
}); 
3

$(this)代替$('this')

查看.data()。嘗試.attr() :)

1

請嘗試下面,但我不知道你想從中得到什麼。

var items = 0; 
$('div.item').each(function() { 
    items += parseInt($(this).attr('id')); 
}); 

要計算的ID與開始與XYZ-可以通過以下腳本進行計數ID名稱

$('div[id^=xyz-]').length