Javascript 模拟单击动态添加的元素
我想模拟点击动态附加的元素。但是我使用的代码不起作用。我不知道怎样才能继续我的剧本。我在加载窗口事件时使用了Javascript 模拟单击动态添加的元素,javascript,jquery,html,Javascript,Jquery,Html,我想模拟点击动态附加的元素。但是我使用的代码不起作用。我不知道怎样才能继续我的剧本。我在加载窗口事件时使用了.trigger()方法。它不起作用 代码: $(函数(){ $.post(“ajaxify.php”,“name=Heart”,函数(html){ $(“#菜单ul”)。追加(“”+html+“”); }); }); $(窗口)。加载(函数(){ $(“#菜单ul li”)。触发器(“单击”); }); 此场景的最佳竞争者是“开启”方法。它可以很好地处理动态添加的元素 $('#menu'
.trigger()
方法。它不起作用
代码:
$(函数(){
$.post(“ajaxify.php”,“name=Heart”,函数(html){
$(“#菜单ul”)。追加(“”+html+“ ”);
});
});
$(窗口)。加载(函数(){
$(“#菜单ul li”)。触发器(“单击”);
});
此场景的最佳竞争者是“开启”方法。它可以很好地处理动态添加的元素
$('#menu').on('click', 'ul li' function() { // ul li is the context passed to the funciton
//do something
});
您模拟单击的代码是正确的,但它在错误的时间被调用。传递给
$(window.load()
的函数中的代码在窗口完成加载后执行一次,并且只影响执行代码时存在的元素(因此不会影响动态添加的元素)
在添加了动态添加的元素之后,您只需调用该行代码,因此在success
回调函数的末尾,您就可以调用AJAX调用了
为了避免修改现有代码,如果这是页面上提交的唯一AJAX请求,可以使用ajaxSuccess
事件触发单击:
$(document).on('ajaxSuccess', function() {
$('#menu ul li').trigger('click');
});
您可以使用jquery的
on()
方法为DOM中的某个元素注册事件。将新的“li”元素添加到菜单时,您可以触发仅单击该列表元素:
$('<li />').text('My text here').appendTo('#menu ul').trigger('click');
$('').text('My text here').appendTo('#menu ul').trigger('click');
何时添加动态元素,何时模拟单击?现在,您正试图模拟在页面加载后立即单击不存在的元素,这显然是不正确的。动态附加元素的代码看起来如何?打开控制台(F12)并查看是否有任何错误总是一个好主意。JSFIDLE将有助于发送ajax请求并接收发生验证过程的数据,然后使用验证数据将
添加到div中。可能的重复不是事件委派,因此对于动态添加的元素没有用处。他们还询问如何以编程方式触发单击事件,而不是绑定处理程序(尽管他们可能也没有正确地执行该操作,从问题中很难知道)。哦,你给了我一个很棒的主意!这将一次又一次地触发所有#菜单ul li
的点击
,而不仅仅是新的。
$('<li />').text('My text here').appendTo('#menu ul').trigger('click');