私は動作する次のjQueryコードを持っていますが、追加したいものを指定する必要なしに、追加されているものに対して追加アクションを実行できるかどうかを考えさせられました。 append().append()
はトリックを実行しませんでした。最初のappend()
アクションの子ではなく、2つの要素を隣り合わせに配置するだけです。
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();
}
}));
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();
}
}));
.appendTo()
を使用して、最初の_<div>
_をIDコンテナーを持つ要素に追加し、その新しい要素への参照を取得してから、.append()
:
_$('<div/>',{
'id' : 'child'
}).appendTo('#container').append(
$('<a/>', {
'class' : 'close',
'href' : 'javascript:;',
html : 'close',
click : function(e){
e.preventDefault();
$('#' + child).remove();
}
})
);
_
append
は追加されたコンテンツへの参照を返さないためです。同じオブジェクト、つまり最初の追加の後、または実行する追加の数に関係なく、container
を参照しています。したがって、他の提案されているようにappendto
を使用するか、失敗した理由をよりよく示す以下を使用できます。
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();
}
}));
追加を使用してから追加します 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();
}
}));