我有以下可以工作的jQuery代码,但它让我思考是否有可能在不需要指定我想要追加的内容的情况下对要追加的内容执行追加操作。append().append()
没有做到这一点,它只是将两个元素放在一起,而不是第一个append()
操作的子元素。
作品:
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();
}
}));
http://jsfiddle.net/Y8TwW/1/
发布于 2012-05-03 06:25:44
可以使用.appendTo()
将第一个<div>
附加到ID为的元素容器,这样就可以引用这个新元素,然后使用.append()
$('<div/>',{
'id' : 'child'
}).appendTo('#container').append(
$('<a/>', {
'class' : 'close',
'href' : 'javascript:;',
html : 'close',
click : function(e){
e.preventDefault();
$('#' + child).remove();
}
})
);
发布于 2012-05-03 06:55:37
因为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/3/
发布于 2012-05-03 06:24:41
我会使用appendto,然后追加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();
}
}));
https://stackoverflow.com/questions/10422501
复制相似问题