4
var data='<div class="shout_msg">
    <span class="username">3</span>
    <span class="message">hello</span>
</div>
<div class="shout_msg">
    <span class="username">0</span>
    <span class="message">yo</span>
</div>
<div class="shout_msg">
    <span class="username">0</span>
    <span class="message">hey</span>
</div>
<div class="shout_msg">
    <span class="username">0</span>
    <span class="message">haha</span>
</div>';

$(data).find(".shout_msg").each(function(index){ 
    console.log($(this).find("span.username").text() ); 
});

它不返回任何东西。基本上,此处以变量形式显示的数据来自 AJAX 请求。但无论如何,我正在做一个愚蠢的错误或其他事情。请纠正我。

4

2 回答 2

5

您可能希望filter在这种情况下使用,因为您不是在对象内部进行搜索。

$(data).filter(".shout_msg").each(function(index){ 
  console.log( $(this).find("span.username").text() );
});

这是一个快速演示。

http://jsbin.com/ocefeq/1/edit

于 2013-08-01T00:27:03.337 回答
2

你应该在filter这里使用

$(data).filter(".shout_msg").

您需要访问元素的第一级,但 find 将尝试获取不包括当前级别的元素并获取后代。

检查小提琴

于 2013-08-01T00:27:09.457 回答