2012-05-02 28 views
13

Aşağıdaki jQuery koduna sahibim, ancak neyi eklemek istediğimi belirtmeksizin eklendikleriyle ilgili bir ekleme eylemi gerçekleştirmek mümkün olsaydı, bu beni düşünmeye itti. append().append() hile yapmadı, sadece iki öğeyi yan yana koydu ve ilk append() eyleminin bir çocuğunu değil.jQuery ekteki öğeye ekleme

İşleri:

var container = $('#container'), 
    child = 'child'; 

$('#container').append($('<div/>',{ 
    'id' : 'child' 
})); 

$('#' + child).append($('<a/>', { 
    'class' : 'close', 
    'href' : 'javascript:;', 
    html : 'close', 
    click : function(e){ 
     e.preventDefault(); 
     $('#' + child).remove(); 
    } 
})); 

Çalışmıyor:

var container = $('#container'), 
    child = 'child'; 

$('#container').append($('<div/>',{ 
    'id' : 'child' 
})).append($('<a/>', { 
    'class' : 'close', 
    'href' : 'javascript:;', 
    html : 'close', 
    click : function(e){ 
     e.preventDefault(); 
     $('#' + child).remove(); 
    } 
})); 

http://jsfiddle.net/Y8TwW/1/

cevap

17

Sen yeni öğeye bir başvuru olması için, kimlik kapsayıcıyla elemana ilk <div> eklemek için .appendTo() kullanabilirsiniz ardından .append() kullanın: eklenen referansı dönmez

$('<div/>',{ 
    'id' : 'child' 
}).appendTo('#container').append(
    $('<a/>', { 
     'class' : 'close', 
     'href' : 'javascript:;', 
     html : 'close', 
     click : function(e){ 
      e.preventDefault(); 
      $('#' + child).remove(); 
     } 
    }) 
); 
1

Ben appendto kullanmak istiyorum ve daha sonra ekleme http://jsfiddle.net/Y8TwW/2/

var container = $('#container'), 
    child = 'child'; 
$('<div/>', { 'id': child } 
).appendTo(container 
).append($('<a/>', { 
    'class' : 'close', 
    'href' : 'javascript:;', 
    html : 'close', 
    click : function(e){ 
     e.preventDefault(); 
     $('#' + child).remove(); 
    } 
})); 
+1

yerleştirin yanıtında ilgili kod, keman değil sadece bir bağlantı. – Gabe

2

append Çünkü içeriği. İlk ekten sonra aynı nesneye, yani container'a atıfta bulunursunuz, ya da kaç tane eklenti olursa olsun. Diğer önerilen şekilde appendto kullanın veya neden başarısız olduğunuzu daha iyi gösteren aşağıdakileri kullanabilirsiniz.

var container = $('#container'), 
    child = 'child'; 

    $('#container').append($('<div/>',{ 
     'id' : 'child' 
     })).find('#' + child).append($('<a/>', { 
     'class' : 'close', 
     'href' : 'javascript:;', 
     html : 'close', 
     click : function(e){ 
      e.preventDefault(); 
      $('#' + child).remove(); 
     } 
    }));​ 

Fiddle http://jsfiddle.net/Y8TwW/3/

İlgili konular