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. copy-merge が 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 に答える