1

選択したクラス テキストを取得しようとしています。

私は持っている

for (var i=0; i<$('.toys').length; i++){

       if($('.toys')[i].text()=='lego'){
         alert('got it');
         return false;
      }
    }

html

<div class='toys'> toya  </div>
<div class='toys'> lego  </div>
<div class='toys'> toyb  </div>
<div class='toys'> toyc  </div>

オブジェクト # にメソッド 'text' がないというエラーが表示されました

これを修正するにはどうすればよいですか? 助けてくれてありがとう!

4

2 に答える 2

2

まず、DOM へのクエリを繰り返さないように、結果をキャッシュする必要があります。

コードの問題は、 usingが生の DOM 要素 ( jquery オブジェクトではない[]) を返し、 DOM 要素にメソッドがないことです。の代わりに使用する必要があります。.text().eq(i)[i]

ただし、他の人が述べたように、より適切な方法は、使用する.each()か、代わりに使用することです.filter()

var wanted = $(".toys").filter(function() {
    return $.trim($(this).text()) === 'lego';
});
if (wanted.length){
  alert('got it'); // or do whatever you want with the wanted element..
}
于 2012-11-28T17:54:54.633 に答える
1

次のように、コレクションを反復処理するために jQuery$.each()ループを使用できます (使用する必要があります)。

$(".toys").each(function() {
    if($(this).text() == "lego") {
        alert("got it!");
        return false;
    }
});
于 2012-11-28T17:49:54.053 に答える