根据 jquery 对象数组中的属性查找元素

Find an element based on attribute in array of jquery objects

我有一个 HTML dom,其中包含三个像这样的 div:

<div data-tab="1">
</div>
<div data-tab="2">
</div>
<div data-tab="3">
</div>

然后我将所有这些 div 收集到一个 jQuery 对象中,如下所示:

var $tabs = jQuery( '*[data-tab]' );

现在,$tabs 包含所有三个。那太棒了。但是,我试图更改其中一个,所以我尝试使用 find() 来查找我想要更改的对象,但不知何故,我无法使用 find() 在 $tabs 中找到任何对象。

示例:

$tabs.find( '*[data-tab="2"]' ); simply returns []

为什么这行不通,或者更好的是,什么行得通? :P

您需要使用 .filter() 函数而不是 .find():

$tabs.filter('[data-tab=2]')

window.$tabs = jQuery('*[data-tab]');
var $filteredtabs = $tabs.filter('[data-tab=2]')
console.log($filteredtabs)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-tab="1">
</div>
<div data-tab="2">
</div>
<div data-tab="3">
</div>

演示:http://jsfiddle.net/kishoresahas/9nxzttjp/