看一下这个例子:
let ele = $(`
<div></div>
<div class="test" id="test" data-test="test"></div>`
);
const ele1 = ele.find('.test'); //undefined
const ele2 = ele.find('#test'); //undefined
console.log(ele1.data());
console.log(ele2.data());
ele = $('<div class="test" id="test" data-test="test"></div>');
console.log(ele.data()); //works
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
.find()
返回的对象与$()
返回的对象之间似乎存在差异
我认为它与第一个ele
有两个没有父母的兄弟姐妹有关,但考虑到无法改变,我怎么能得到{{1数据?
当你创建一个像我一样没有父元素的元素时,我无法找到任何预期的行为,为什么会发生这种情况。
答案 0 :(得分:1)
您可以将HTML包装在单个div中,以便能够在其上使用find()
。但是,如果您无法更改HTML,则可以使用filter()
来完成,因为它是jQuery元素的集合:
// Your element, as you defined it in your question
let ele = $(`
<div></div>
<div class="test" id="test" data-test="test"></div>`
);
console.log(ele.filter('.test').data());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;