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
,然后是整个回复。
答案 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>"))