Javascript 如何创建动态生成的元素
我使用jQuery插件dForm动态生成表单字段 对于事件,我知道我可以使用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
$(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
调用是一个异步调用,因此它会在调用完成之前尝试追加。移动您的追加