<li>关于ajax的回应不计算出于某种原因</li>

时间:2014-03-03 04:37:18

标签: jquery ajax

我正在使用以下脚本:

$.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>的?

1 个答案:

答案 0 :(得分:3)

li元素似乎是选定的节点。 .find内搜索这些节点。即$(response).find("li")li元素(不存在)中搜索li个元素。

您可以改为使用.filter,但如果知道响应中的顶级节点始终是li元素,只需直接访问.length

$(response).length