假设我不想找到所有具有 data-view
属性的元素,但我可以找到具有 data-view
的父元素其他 data-view
元素。我不希望 child 参与搜索,我想要 parent 。
$('[data-view]').each(function() {});
使用以下 HTML:
<body>
<div data-view="app">
<div data-view="hello1">
</div>
</div>
<div data-view="job">
</div>
</body>
它应该只返回 app
和 job
而不是 hello1
。我在使用 .not
选择器时运气不好,它停止选择任何 [data-view]
元素。
有什么建议吗?
最佳答案
尝试:
var target_attr = "[data-view]";
$(target_attr).filter(function () {
return !$(this).find(target_attr).length;
}).each(function () {
// Whatever
});
演示: http://jsfiddle.net/gEVyk/1/
这将找到带有 data-view
的所有元素具有 0 个具有相同属性的 后代 的属性。在你的情况下,这是 hello1
和 job
.
如果您确定它们只是 <div>
s,你应该使用div[data-view]
.
这将找到具有 0 个具有相同属性的 parents 属性的所有元素:
var target_attr = "[data-view]";
$(target_attr).filter(function () {
return !$(this).parents(target_attr).length;
}).each(function () {
// Whatever
});
演示: http://jsfiddle.net/ue9w9/1/
在你的情况下,这是 app
和 job
.
关于javascript - JQuery:不要在 child 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256440/