2

我正在使用 jQuery 运行我的 HTML 文件以收集元素。然后,我想对找到的每个元素执行 jQuery 操作。这是我到目前为止所拥有的,但它不起作用,因为我不知道如何存储每个方法中的 jQuery 元素。有人可以帮忙吗?

var foundElems = [];
$('#some-container .some-class').each( function(index) {
    //filter $(this)
    //store $(this)
    foundElems.push($(this));
});
$('#some-container2 .some-class2').each( function(index) {
    //filter $(this)
    //store $(this)
    foundElems.push($(this));
});
//do this again for many containers....

//then call some jQuery function on each element of that collection
foundElems.fadeOut('slow');
4

4 回答 4

1

您可以通过使用 . 分隔多个元素来选择多个元素,

$('#some-container .some-class, #some-container2 .some-class2').fadeOut('slow');

如果你必须容纳一堆这样的元素,你可以用选择器构建一个数组,并将这个连接的数组传递给 jQuery 函数。

var arr = ["#some-container2 .some-class2","#some-container .some-class"];
$(arr.join(",")).fadeOut('slow');

工作示例 http://jsfiddle.net/mBtKg/

于 2013-04-17T09:57:24.383 回答
0

使用$.merge()

var foundElems = $();
$('#some-container .some-class').each( function(index) {
    //filter $(this)
    //store $(this)
    foundElems=$.merge(foundElems,$(this));
});
$('#some-container2 .some-class2').each( function(index) {
    //filter $(this)
    //store $(this)
    foundElems=$.merge(foundElems,$(this));
});
//do this again for many containers....

//then call some jQuery function on each element of that collection
foundElems.fadeOut('slow');

您还可以使用逗号合并所有选择器查询:

var foundElems = $();
$('#some-container .some-class,#some-container .some-class2,#some-container .some-class3').each( function(index) {
    //filter $(this)
    //store $(this)
    foundElems=$.merge(foundElems,$(this));
});


//then call some jQuery function on each element of that collection
foundElems.fadeOut('slow');
于 2013-04-17T09:58:37.920 回答
0

您的 jQuery 看起来不错,在您的 .each 语句结束时,您应该有一个元素数组。你的问题是你不能在你的数组对象上调用 .fadeOut 。

你需要这样做:

$.each(foundElems, function() {
   $(this).fadeOut("slow");
});
于 2013-04-17T09:58:38.730 回答
0

我能想到的最简单的解决方案:

var array; 
array = $.merge($(),$.find('#someContainer .someClass, #someContainer2 .someClass2'));
array.fadeOut(1000);
于 2013-04-17T10:13:04.083 回答