Javascript 如何创建动态生成的元素

Javascript 如何创建动态生成的元素,javascript,jquery,Javascript,Jquery,我使用jQuery插件dForm动态生成表单字段 对于事件,我知道我可以使用 $(document).on("click","#id", function(){}); 但如果我想说 $("#id").after("<div></div>"); $(“#id”)。在(“”)之后; 那我该怎么做呢?我试过了 $("#id").after("<div></div>").trigger("create"); $(“#id”).after(”).tr

我使用jQuery插件dForm动态生成表单字段

对于事件,我知道我可以使用

$(document).on("click","#id", function(){});
但如果我想说

$("#id").after("<div></div>");
$(“#id”)。在(“”)之后;
那我该怎么做呢?我试过了

$("#id").after("<div></div>").trigger("create");
$(“#id”).after(”).trigger(“create”);
即使我真的不明白它是干什么的,也无济于事


谢谢。

我认为活动代表团的实际行动有些混乱。之所以使用
.on()
是因为事件处理程序在DOM就绪状态下处理,但动态元素不存在。现在,当您要附加到动态内容时,不需要事件委派,因为当您运行
append
命令时,您应该将页面上存在的元素作为目标,无论它是动态的还是从一开始就存在


因此,假设您动态创建了一个ID为
test
的div。您可以使用一个简单的
$(“#test”)追加到此div,因为在运行此命令时,元素已存在。我希望这会有所帮助。

我认为,对于活动代表团的实际行动,存在一些困惑。之所以使用
.on()
是因为事件处理程序在DOM就绪状态下处理,但动态元素不存在。现在,当您要附加到动态内容时,不需要事件委派,因为当您运行
append
命令时,您应该将页面上存在的元素作为目标,无论它是动态的还是从一开始就存在


因此,假设您动态创建了一个ID为
test
的div。您可以使用一个简单的
$(“#test”)追加到此div,因为在运行此命令时,元素已存在。我希望这会有所帮助。

这很有效,因为它是对事件的响应:

$('#id').after('<div></div>');
原因是事件遍历整个DOM结构,从特定元素一直到父文档/窗口。因此,在本例中,jQuery将事件侦听器分配给
文档而不是元素,然后通过选择器过滤事件。因此,即使在事件发生后动态添加元素,它们仍然会被捕获,因为它们仍然将事件传递给
文档

但是,这不会响应以下事件:

$('#id').after('<div></div>');
$('#id')。在('')之后;
这只是选择一个元素,执行一个操作,然后就完成了。因此,如果该元素不在DOM上,则不会执行该操作


真的没办法。如果您希望每个
$(“#id”)
都附加一个
'
,那么每当您删除
id
元素并重新添加它时,您都需要再次调用该行代码。

这是有效的,因为它正在响应一个事件:

$('#id').after('<div></div>');
原因是事件遍历整个DOM结构,从特定元素一直到父文档/窗口。因此,在本例中,jQuery将事件侦听器分配给
文档而不是元素,然后通过选择器过滤事件。因此,即使在事件发生后动态添加元素,它们仍然会被捕获,因为它们仍然将事件传递给
文档

但是,这不会响应以下事件:

$('#id').after('<div></div>');
$('#id')。在('')之后;
这只是选择一个元素,执行一个操作,然后就完成了。因此,如果该元素不在DOM上,则不会执行该操作


真的没办法。如果希望每个
$('#id')
都附加一个
'
,那么在删除
id
元素并重新添加它时,您需要再次调用该行代码。

您的问题不够清楚,但只是出于猜测,我认为您希望动态添加一个
div
,并希望为该
div
注册一个
事件,如果是这种情况,您也可以这样做,但还有其他方法

$("#id").after($("<div/>", {
    'id':'test',
    'click':function() { alert ("Clicked!"); }
}));
插入新的
div

$("#id").after($("<div/>", { 'id':'test'}));

您的问题不够清楚,但只是出于猜测,我认为您希望动态添加
div
,并希望为该
div
注册
事件,如果是这种情况,那么您也可以这样做,但还有其他方法

$("#id").after($("<div/>", {
    'id':'test',
    'click':function() { alert ("Clicked!"); }
}));
插入新的
div

$("#id").after($("<div/>", { 'id':'test'}));

不清楚你想要完成什么。你想发起一个活动吗?向DOM中添加元素?还有别的吗?
。在(“”
应该创建空的div元素之后,不需要“触发”任何东西。这就是您要找的吗:?如果问题不清楚,很抱歉。我想做一些类似的事情:“$”(“#id”)。在(“”)之后它现在不起作用,大概是因为jQuery找不到元素。不清楚您要实现什么。你想发起一个活动吗?向DOM中添加元素?还有别的吗?
。在(“”
应该创建空的div元素之后,不需要“触发”任何东西。这就是您要找的吗:?如果问题不清楚,很抱歉。我想做一些类似的事情:“$”(“#id”)。在(“”)之后它现在不起作用,大概是因为jQuery找不到元素。所以动态添加的元素与原始HTML没有区别?不,您应该以相同的方式定位它。如果要处理该动态元素上的事件,只能使用
.on()
。但简单地以追加为目标与往常一样@好的,谢谢你启发我。我想我的困惑源于这样一个事实:现在,.on(click)起作用,而$(“#test”).append(“见,新span”);没有。所以我不明白可能是什么问题。当您运行该命令时,页面上是否存在
#test
@satobolinah@SatoBolin——问题在于
$。get
调用是一个异步调用,因此它会在调用完成之前尝试追加。移动您的
追加