我正在尝试获取所选的课文。
我有
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'
我该如何解决这个问题?谢谢你的帮助!
答案 0 :(得分:2)
首先,您应该缓存结果,以避免重复查询DOM。
代码的问题在于使用[]
返回原始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..
}
答案 1 :(得分:1)
您可以(并且应该)使用jQuery $.each()
循环来迭代集合,如下所示:
$(".toys").each(function() {
if($(this).text() == "lego") {
alert("got it!");
return false;
}
});