5

jQueryの理解を深めようとしています。次のコードを検討してください。

if ($('.myClass').data('id') == '123') {
}

これはどのように作動しますか?$()が要素のコレクションを返すことを理解するまでは、単純に見えます。では、上記のコードは正確には何をしているのでしょうか? このような要素のコレクションの data-id 属性の値を比較することは、どのように理にかなっていますか?

(コレクション内の各要素を明示的にテストするために使用できることを理解each()しています。私の質問は、上記のコードが何をするかについてです。)

4

3 に答える 3

2

.data('id')コレクション内の最初のアイテムの値を返しますが、コレクション内のすべてのアイテムの値を設定します。これは、、などの.data('id','xyz')他のjQueryメソッドとほぼ同じ動作です。.html().text()

そのようなステートメントの最初の部分をテストするだけでは意味がないように思われるかもしれませんが、セレクターがIDである場合や、内部でif使用する場合など、要素が1つだけであることがわかっている場合はより意味があります。$(this).data('id')イベントハンドラーか何か。

コレクション内のすべてのアイテムに特定のデータ値があるかどうかをテストする方法を尋ねている場合は、次のように実行できます。

var $col = $('.myClass');
if ($col.length === $col.filter(function(){return $(this).data('id') === '123';}).length) {
   // do something
}

または、少なくとも1つがそのデータ値を持っているかどうかを知りたいだけの場合:

if ($('.myClass').filter(function(){return $(this).data('id') === '123';}).length > 0) {
   // do something
}
于 2012-12-15T02:44:39.847 に答える
1

jquery関数を介して値を取得しようとすると、コレクションの最初のアイテムから値が返されると思います。たとえば、次の場合:

<div class='1'></div>
<div class='2'></div>
<div class='3'></div>

そしてあなたは走ります:

$('div').attr('class');

「1」を返します。これがすべてのjQuery関数で統一されているかどうかはわかりませんが、これは予想される動作です。

于 2012-12-15T02:45:55.940 に答える
0

jQuery .each() を使用できます - http://api.jquery.com/jQuery.each/

stackoverflow は jsFiddle があまり好きではないため、コメントの例。

于 2012-12-15T02:40:18.587 に答える