jQuery - 将方法应用于多个对象 [英] jQuery - Apply method to multiple objects
问题描述
我想对许多声明的变量运行相同的方法。
I want to run the same method on a number of declared variables.
例如。说我有:
var searchBtn = $('#search');
var signInBtn = $('#signin');
signInBtn.removeClass('active');
searchBtn.removeClass('active');
我想做这样的事情:
$(signInBtn, searchBtn).removeClass('active');
但我不能, searchBtn
是在这种情况下解释为范围(我认为)。
But I can't, searchBtn
is interpreted as scope in this context (I think).
我的问题是,如何组合定义的对象并对它们运行相同的方法?
My question is, how can I combine defined objects and run the same method on them?
注意:为了澄清,我不是在谈论使用ID,类等定位元素,我在谈论已被定义为变量的对象。
Note: Just to clarify, I'm not talking about targeting elements using ID, classes, etc, I'm talking about objects that have been defined as variables.
推荐答案
您可以使用 add()
组合两组jquery对象:
You can use add()
to combine two sets of jquery objects:
var searchBtn = $('#search');
var signInBtn = $('#signin');
signInBtn.add(searchBtn).removeClass('active');
如果您有多个对象,可以链接 add()
s或将对象放在一个数组中 reduce()
他们在一起( add()
不支持多个参数):
If you have multiple objects, you can chain the add()
s or put the objects in an array and reduce()
them together (add()
doesn't support multiple arguments):
[signInBtn,searchBtn,anotherButton].reduce(function(a,b){return a.add(b);})
.removeClass('active');
示例代码段
$('#deactivate').click(function() {
var searchBtn = $('#search');
var signInBtn = $('#signin');
var exitBtn = $('#exit');
[searchBtn, signInBtn, exitBtn].reduce(function(a, b) {
return a.add(b);
})
.removeClass('active');
});
.active {
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id="search" class="active">Search</button>
<button id="signin" class="active">Sign In</button>
<button id="exit" class="active">Exit</button>
<button id="deactivate">Deactivate</button>
这篇关于jQuery - 将方法应用于多个对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!