限制AJAX响应中的元素数量

时间:2013-12-05 15:06:58

标签: javascript jquery ajax

AJAX响应返回<a>元素列表:

<a href="/1/">One</a>
<a href="/2/">Two</a>
<a href="/3/">Three</a>

如何从响应中仅选择第一个 n a元素?

$.ajax({
    url: '/' + page,
    success: function (res) {
        btn.after($('a', $(res)).slice(0,20));
    }
});

这就是我目前正在尝试但我得到的是Uncaught Error: Syntax error, unrecognized expression,然后是整个回复。

3 个答案:

答案 0 :(得分:1)

响应在结尾处有两个关闭div个元素但没有两个开口,所以我不得不做一个:

$.ajax({
    url: '/' + page,
    success: function (res) {
        btn.after($('a', $($.trim('<div><div>'+res))).slice(0,20));
    }
});

答案 1 :(得分:0)

以下是我要做的事情:

$.ajax({
    url: '/' + page,
    success: function (res) {
        btn.after(res.split('</a>').splice(0, num).join('</a> ') + '</a>');
    } });

它会拆分它,只返回你想要的元素。

JSFiddle:http://jsfiddle.net/howderek/VamZt/

答案 2 :(得分:0)

您遇到的问题是上下文选择器不返回任何内容。一个简单的测试显示它。

console.log($('a', $(res)))

将其分解成碎片。您需要对从服务器返回的内容使用过滤器,因为它是一个锚列表。

var content = $(res);
var anchors = content.filter("a");
var anchorLimit = anchors.slice(0,20);
btn.after(anchorLimit);

其他选项是做你正在做的事情,但把它包装在一个div中。

$('a', $("<div>" + res + "</div>"))

JSFiddle