2012-12-16 21 views
10

Birden çok diva başvurum var ve hepsini tek seferde ONE jQuery nesnesine eklemek istiyorum.Tek jQuery nesnesine birden fazla jQuery/DOM öğesi ekleme

>>> $().add($e1).add($e2).add($e3) 
[div, div, div] 

>>> $e1.add($e2).add($e3) 
[div, div, div] 

Ama daha zarif çözüm istiyor:

Bunlar işe yaramaz ...

>>> $($e1, $e2, $e3) 
[div] 

>>> $([ $e1, $e2, $e3 ]) 
[[div], [div], [div]] 

>>> $().add($e1, $e2, $e3) 
[div] 

>>> $().add([ $e1, $e2, $e3 ]) 
[[div], [div], [div]] 

Ancak bu çalışır. Her kullanarak dizinin üzerinde

+0

$ el1 $ el2 ve $ el3 nedir? Daha önce jQuery tarafından seçilen Dom elemanları? –

+1

Neden onları bir diziye zorlamıyorsunuz? –

+0

Ve jQuery nesnesini bu dizideki (zarifçe) – treecoder

cevap

11

saf DOM elemanları, jquery nesneleri kendilerini değil. Biz jQuery() için jquery nesneleri dizisini geçirdiğinizde

var $e1 = $('#x'), 
    $e2 = $('#y'), 
    $e3 = $('#z'); 

var e1 = $e1[0], 
    e2 = $e2[0], 
    e3 = $e3[0]; 


>>> $([$el, $e2, $e3]) // does not work 
[[div], [div], [div]]  // jquery object that contains other jQuery objects 

>>> $([el, e2, e3])  // works 
[div, div, div]    // jquery object that contains pure DOM objects 

, bunlar sonuç jquery nesne eklemeden önce "Çizelgesi" DEĞİLDİR. Bununla birlikte, tek bir jquery nesnesini geçirmenin istenmeyen bir şey yapmasını da hatırladığınızı unutmayın. saf DOM elemanı olup, ikinci eleman üzerinde

>>> $([$e1, e2, $e3]).css('background-color', '#000'); 

Not ve arka plan rengi tatbik edilir: jQuery ve saf DOM nesneleri karışımı halinde

>>> $($e1) 
[div]      // returns a jquery object 

İlginç bir şekilde, tek saf nesneler üzerine çalıştırılır o ikinci elemente.

Alt satır şudur: jquery nesnesine aynı anda birden çok öğe eklemek isterseniz, nesnelere değil, nesnel nesneyi ekleyin.

+0

Harika cevap, bana da yardım etti; Teşekkürler! :) –

+0

jquery beni burada başaramadı –

1

Iyi bu nesnelerin dizisi yapmak ve bir değişkene içine itmek gerekiyor.

var $a = $('<div/>').attr('class','box'); 
var $b = $('<div/>').attr('class','box'); 
var $c = $('<div/>').attr('class','box'); 
var $d = $('<div/>').attr('class','box'); 

var $arr = [$a, $b, $c, $d]; 

$.each($arr, function(i, el){ 
    $(el).text('asdf').appendTo('body'); 
}); 

plz keman ödeme:

http://jsfiddle.net/nvRVG/1/

jQuery ancak bu unsurlar yalnızca, bir jquery nesnesine seferde elemanların bir demet eklemenize izin vermez
+0

dışında nasıl yapabilirim? – Jai

+0

cevabında her divanda aynı metni eklemek ne istiyorsunuz? İstediğin bu mu? – Jai

İlgili konular