Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模拟单击动态添加的元素_Javascript_Jquery_Html - Fatal编程技术网

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');