2012-05-02 22 views
13

Tengo el siguiente código jQuery que funciona, pero me hizo reflexionar si era posible hacer una acción de agregar lo que se adjuntaba sin la necesidad de especificar a qué quería agregar. append().append() no funcionó, simplemente puso los dos elementos uno junto al otro y no un hijo de la primera acción append().jQuery adjuntar dentro del elemento anexo

Obras:

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(); 
    } 
})); 

no funciona:

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/

Respuesta

17

Puede utilizar .appendTo() para anexar la primera <div> al elemento con el envase de identificación, para que tenga una referencia a ese nuevo elemento, a continuación, utilizar .append():

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

que haría uso de la appendto y luego append 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

Coloque el código relevante en la respuesta, no sólo un enlace con el violín. – Gabe

2

Debido append no devuelve referencia al anexo contenido. Se está refiriendo al mismo objeto, es decir, container después del primer anexo, o no importa cuántos adjuntos ejecute. De modo que, como otros usos sugeridos, appendto o puede usar lo siguiente para demostrar mejor por qué fallaba.

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(); 
     } 
    }));​ 

violín http://jsfiddle.net/Y8TwW/3/

Cuestiones relacionadas