2012-01-26 11 views
1

私は現在、jQueryで.each()関数を使いこなしており、divをアイテムのidと数えて文字列に追加しようとしています。jQuery。各コールバックエラー

問題は、jquery.comのWebサイトからロードするjQueryソースからコールバックエラーが発生することです。

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

このエラーはFirebugで確認されています。

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

をカウントすることができます私のために[OK]を動作します:http://jsfiddle.net/jvnVA/ – JamesHalsall

答えて

9

私はそれがそれぞれではないと思う、それは.dataだ。おそらく

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

はすなわち、変数ではない引用符で囲まれた文字列としてthisを使用します。

var items = ""; 

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

いいえ、私はやりますアイテムのデータ値を取得したい。

でも同じように動作すれば、その代わりにそれを使用するかもしれません – Flaashing

+0

'$( 'this')'があなたのDOM要素として構築されていないので、あなたは.data呼び出しでエラーを受けています。ブラウザ - それはtextnodeとして構築されており、textnode上で 'data'を呼び出す試みが失敗しています。あなたの間違いは「this」を引用しています。 – Rup

+0

ああ...どのように恥ずかしい..あなたは正しい私は 'これ'のためにqoutingを台無しに...感謝:) – Flaashing

3

問題は、使用している.dataの()メソッドを使用することですか?

.data()も確認してください。試してみてください.attr() :)

3

$(this)代わりの$('this')

1

下記からお試しください。 XYZ-から始まるid名とidをカウントする

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

は、以下のスクリプトで

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