0
var first = $('#one, #two, #three');
var second = $('#six, #seven, #eight');

现在,我想用它$.merge()来合并选择并隐藏它们。

var merged = $.merge(first, second);
merged.hide(); // works, but alters "first"

由于我后来必须first单独重用选择,所以我尝试了复制合并。

var merged = $.merge( $.merge([], first), second );
merged.hide(); // =
// = Uncaught TypeError: Object [object HTMLDivElement], [object HTMLDivElement], [,...] has no method 'hide'

错误很明显——元素失去了 jQuery 关联。

  1. 我是否跳过了有关选择分组/合并的课程?
  2. $(merged).hide();唯一的解决方案吗?
  3. 为什么复制合并删除了 jQuery?
4

2 回答 2

2

您不需要.add().merge()代替:

var combined = first.add(second);
             //  ^----will not be affected
combined.hide();
于 2012-07-19T11:13:11.193 回答
1

合并的文档说它通过添加秒的值来改变第一个对象。我相信你需要像这样复制它:$.merge($.merge($(), first), second)

或者你可以使用切片:

$.merge(first.slice(0), second)

于 2012-07-19T11:12:45.357 回答