我遇到了两个对象数组的情况。 我想从两个数组中选择相同的对象并显示它。 例如我有以下UL( 您可以在jsFiddle上看到它 ):

<ul>
<li id="one" class="color pro">one</li>
<li id="two" class="color pro">two</li>
<li id="three" class="color">three</li>
<li id="four" class="color">four</li>
</ul>

我正在使用以下脚本来显示相同​​的对象。

var activeElementsColors = $("ul li.color");
var activeElementsPro = $("ul li.pro");                             

var activeElements = activeElementsPro.filter(function(el) {  
return $.inArray(el, activeElementsColors) > -1;
});

activeElements.show();

我知道我可以使用$(“ li.color.pro”)。show(),但以上只是一个示例。 实际的代码比这复杂。

===============>>#1 票数:2

传递给.filter的函数中的第一个参数是jQuery对象中元素的索引,而不是元素本身。 使用this相反,这确实涉及到的元素: http://jsfiddle.net/StPew/7/

var activeElements = activeElementsPro.filter(function() {
    return $.inArray(this, activeElementsColors) > -1;
});

文档

function( index )

用于测试集合中每个元素的函数。 this是当前的DOM元素。

===============>>#2 票数:2 已采纳

var activeElementsColors = $("ul li.color");
var activeElementsPro = $("ul li.pro");                             

var activeElements = activeElementsPro.filter(function(el,e) {  

    return $.inArray(e, activeElementsColors) > -1;
});
console.log(activeElements);
activeElements.show();

http://jsfiddle.net/StPew/8/

===============>>#3 票数:1

filter回调的参数是当前元素的索引。 改用this

return $.inArray(this, activeElementsColors) > -1;

那就是说你在做什么似乎很错误。 假设您真正想要的是.pro.color选择器的交集,那么您只需

$(".pro:.color").show();

小提琴

===============>>#4 票数:1

.filter()将jQuery对象作为参数,并返回一个新对象,该对象包含第一个对象中的元素减去第二个jQuery对象中不存在的元素,因此,如果您已经有了jQuery对象,则可以使用他们喜欢这样显示两个对象:

var activeElementsColors = $("ul li.color");
var activeElementsPro = $("ul li.pro"); 
activeElementsPro.filter(activeElementsColors).show();

  ask by Imran translate from so

未解决问题?本站智能推荐:

关注微信公众号