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

$.merge(); strange behavior, lost jQuery association

本文关键字:关联 jQuery merge      更新时间:2023-12-16
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?

你不需要.merge(),改用.add((:

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

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

或者你可以使用切片:

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