我正在通过Ajax获取一些数据,我想从其ID中获取标签的内容。我不明白为什么它不起作用:
$.get('/foo', function (data) {
console.log('Found', data.match(/<.+\s+id\s*=\s*"display"[^>]+>.*?<\/div>/)[0]);
console.log($(data).find('#display').length)
})
我明白了:
Found <div id="display" data-title="Sandbox" data-display="plain"></div>
0
所以我可以确认我的标签在接收的数据中,但是$(data).find('#display')
找不到它。
为什么?
这个问题与this十分相似,但没有解释为什么它不起作用
答案 0 :(得分:4)
原因是find
查看给定节点的后代。
注意长度如何为1:
console.log($(data).filter('#display').length)
// ^^^^^^
或者,您可以将节点包装在父节点中,然后然后执行find
:
var wrapper = $("<div>").append(data);
console.log(wrapper.find("#display").length); // --> 1