jQuery find('#id')在Ajax响应上不起作用

时间:2019-01-07 18:56:58

标签: jquery html ajax

我正在通过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十分相似,但没有解释为什么它不起作用

1 个答案:

答案 0 :(得分:4)

原因是find查看给定节点的后代

注意长度如何为1:

console.log($(data).filter('#display').length)
//                  ^^^^^^

或者,您可以将节点包装在父节点中,然后然后执行find

var wrapper = $("<div>").append(data);
console.log(wrapper.find("#display").length); // --> 1