合并jQuery对象
是否有可能将几个jQuery DOM对象合并到一个数组中,并在所有这些数组上调用jQuery方法?
F.ex:
<button>one</button> <h3>two</h3> <script> var btn = $('button'); var h3 = $('h3'); $([btn,h3]).hide(); </script> 这不起作用。 我知道我可以使用'button,h3'select器,但在某些情况下,我已经有了几个jQuery DOM元素,我需要合并它们,所以我可以调用jQuery原型。
就像是:
 $.merge([btn,h3]).hide(); 
会工作。 有任何想法吗?
更新:
解决了它。 你可以这样做:
 $.fn.add.call(btn,h3); 
 我将接受add()build议,指向正确的方向。 
你可以使用add方法。
  .add()完全符合你的要求。 
 h3.add(btn).hide(); 
如果你想让自己更方便一些,就像在你的问题中使用“合并”function,这可以很容易地添加:
 $.merge = function(objs) { var ret = objs.shift(); while (objs.length) { ret.add(objs.shift()); } return ret; }; $.merge([h3, btn]).hide() 
  $.map可以压扁数组: 
 function merge(array_of_jquery_objects) { return $($.map(array_of_jquery_objects, function(el) { return el.get(); })); } 
 $(btn).add(h3).hide(); 
不知道它是否工作,join文档没有提及作为参数提供的jQuery对象,但只有一个元素的列表,所以如果这不起作用,应该这样做:
 $(btn).add(h3.get()).hide(); 
获取一些jQuery对象:
 var x = $('script'), y = $('b'), z = $('body'); 
创build一个新的jQuery对象,其中包含所有其他对象:
 $( $.map([x,y,z], a => [...a]) ) 
使用这个。
 <script> var btn = $('button')[0]; var h3 = $('h3')[0]; $([btn,h3]).hide(); </script>