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>

我收到一条错误消息,说 Object # has no method '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 回答