我想在许多声明的变量上运行相同的方法。
E.g。说我有:
var searchBtn = $('#search');
var signInBtn = $('#signin');
signInBtn.removeClass('active');
searchBtn.removeClass('active');
我想做这样的事情:
$(signInBtn, searchBtn).removeClass('active');
但我不能,searchBtn
在这种背景下被解释为范围(我认为)。
我的问题是,如何组合定义的对象并对它们运行相同的方法?
注意:为了澄清,我不是在谈论使用ID,类等定位元素,我在谈论已被定义为变量的对象。
答案 0 :(得分:5)
您可以使用add()
组合两组jquery对象:
var searchBtn = $('#search');
var signInBtn = $('#signin');
signInBtn.add(searchBtn).removeClass('active');
如果你有多个对象,你可以链接add()
或将对象放在一个数组中,reduce()
将它们放在一起(add()
不支持多个参数):
[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>
答案 1 :(得分:0)
array
怎么样?将对象放在数组中并使用each()
答案 2 :(得分:0)
通过阅读文档,jQuery()
可以获取一系列DOM元素并将其转换为集合,因此如果您不介意额外的开销,您可以这样做:
$([signInBtn[0], searchBtn[0]]).removeClass('active');
这非常冗余,因为它从jQuery对象获取DOM节点只是为了将它们变回jQuery对象,但我想它可以让你不得不循环遍历它们并add()
将它们转换为空集合。 / p>
答案 3 :(得分:-1)
$('#search,#signin').removeClass('active');
答案 4 :(得分:-2)