jQuery - 将方法应用于多个对象 [英] jQuery - Apply method to multiple objects

查看:88
本文介绍了jQuery - 将方法应用于多个对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对许多声明的变量运行相同的方法。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆