我正在使用以下脚本:
$.ajax({
url: urls.notifications,
type: 'POST',
dataType: 'html',
data: {timestamp: notification_timestamp},
success: function(response) {
var responseAmt = $(response).find("li").length;
alert(responseAmt);
}
});
这是我得到的回复:
<li class="notification" data-notification-id="117">
<a href="http://local.dev/user/admin">
<div class="avatar-container">
<img src="http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028">
</div>
</a>
<div class="content">
<p class="message">
<a href="http://local.dev/user/admin"><b>admin</b></a> has commented on your post.
<a href="http://local.dev/gag/image-example-10">
<b>Check it out</b>!
</a>
</p>
<p class="timestamp">
<i class="fa fa-clock-o fa-fw"></i>
5 seconds ago </p>
</div>
</li>
每个响应可以包含1个或多个<li>
,并且我需要对它们进行计数以更新responseAmt
变量,该变量保存返回的通知量。
我试过了:
$(response).find("li").size(); //shows 0
$(response).find("li").length; //shows 0
但是这个工作正常:
$(response).find(".content").length; //shows correct amount
任何人都知道为什么我不能算<li>
的?
答案 0 :(得分:3)
li
元素似乎是选定的节点。 .find
在内搜索这些节点。即$(response).find("li")
在li
元素(不存在)中搜索li
个元素。
您可以改为使用.filter
,但如果知道响应中的顶级节点始终是li
元素,只需直接访问.length
:
$(response).length