Javascript 如何将多个jQuery对象收集到一个jQuery对象中?

Javascript 如何将多个jQuery对象收集到一个jQuery对象中?,javascript,jquery,Javascript,Jquery,假设我有这些变量: var container = $("div#my-awesome-section"); var foo_input = $("input[name=foo]", container); var bar_input = $("input[name=bar]", container); 我想将事件处理程序绑定到两个输入。我希望这能奏效: $([foo_input, bar_input]).on("keypress", function() { /* ... */ }); 但

假设我有这些变量:

var container = $("div#my-awesome-section");
var foo_input = $("input[name=foo]", container);
var bar_input = $("input[name=bar]", container);
我想将事件处理程序绑定到两个输入。我希望这能奏效:

$([foo_input, bar_input]).on("keypress", function() { /* ... */ });

但是遗憾的是,没有。有没有一种方便的方法可以将多个jQuery对象聚集到一个jQuery对象中,以达到这样的目的?

解决方案1:

要与对象一起使用,需要使用

创建一个新的jQuery对象,将元素添加到匹配的元素集中

解决方案2:

您也可以简单地使用逗号分隔的多选择器:

 $("input[name=foo],input[name=bar]", container).on("keypress", function() { /* ... */ });

解决方案1:

要与对象一起使用,需要使用

创建一个新的jQuery对象,将元素添加到匹配的元素集中

解决方案2:

您也可以简单地使用逗号分隔的多选择器:

 $("input[name=foo],input[name=bar]", container).on("keypress", function() { /* ... */ });
在jquery中的中用于添加jquery对象

foo_input.add(bar_input).on("keypress", function() { /* ... */ });
在jquery中的中用于添加jquery对象

foo_input.add(bar_input).on("keypress", function() { /* ... */ });
您也可以尝试以下方法:

$.each([foo_input, bar_input], function() {
    /* ... */
});

在您的情况下,请使用:

$.each([foo_input, bar_input], function() {
    $(this).on("keypress", function() {
        /* ... */
    }); 
});
您也可以尝试以下方法:

$.each([foo_input, bar_input], function() {
    /* ... */
});

在您的情况下,请使用:

$.each([foo_input, bar_input], function() {
    $(this).on("keypress", function() {
        /* ... */
    }); 
});
在阅读有关函数的文档时,我注意到我最初的尝试几乎是正确的。可以使用DOM元素数组初始化jQuery对象,因此我可以这样做:

$([foo_input[0], bar_input[0]]).on("keypress", ...
不过我非常喜欢
add()
函数。

阅读文档中的函数,我注意到我最初的尝试几乎是正确的。可以使用DOM元素数组初始化jQuery对象,因此我可以这样做:

$([foo_input[0], bar_input[0]]).on("keypress", ...

但是我非常喜欢
add()
函数。

我已经将jQuery对象绑定到变量,因此不必在其他地方重复选择器。每次绑定事件处理程序时都必须重复选择器,这将无法达到此目的。您正在查找
.add()
。请参阅第一部分。我已将jQuery对象绑定到变量,因此不必在其他地方重复选择器。每次绑定事件处理程序时都必须重复选择器,这将无法达到此目的。您正在查找
.add()
。见第一部分。