$ .merge();奇怪的行为,丢失了jQuery关联

时间:2012-07-19 10:54:26

标签: javascript jquery

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. 为什么copy-merge会丢弃jQuery?

2 个答案:

答案 0 :(得分:2)

您不需要.merge(),而是使用.add()

var combined = first.add(second);
             //  ^----will not be affected
combined.hide();

答案 1 :(得分:1)

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

或者您可以使用切片:

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