在动态加载的按钮上发送单击事件

时间:2015-02-05 16:14:35

标签: javascript jquery html dom

所以这与我在这个主题上发现的所有帖子略有不同。我有一个通过Jquery动态加载的按钮,我保存了这个按钮的选择器,稍后在我的代码中我需要发送一个click事件(模仿某人点击按钮)现在通常我会使用$('#myID').click(); 这点击了一下。但由于我的按钮是动态加载的,因此不起作用。现在我不需要处理onclick事件。我可以用

$(document).on('click', '#myId',function(e){}); 

为此。我需要实际发送click事件。我试过了

.click();
.on('click);
.onClick();
.trigger('click');

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

通过使用setTimeout()一次又一次地调用该函数,您实际上是在轮询该元素,直到它实际存在,即当您触发click事件时。

// Wait for everything in the document to be loaded
jQuery(document).ready(function() {
    // Make the initial call to the function
    fire_click('#myID');

    // This function tries to find the button, and if it can't
    // find it, it calls itself again in 50 ms.
    function fire_click(selector) {
        elem = jQuery(selector);

        if (elem.length == 0)
            setTimeout(fire_click, 50);
        else
            elem.click();
    }
});

更好的解决方案是在加载按钮时触发一个回调函数。然后,此回调函数可以触发按钮上的click事件,因为只有当按钮实际存在时才会调用回调函数。一般情况下,尽可能避免轮询信息,因此这将被视为更好的解决方案。

答案 1 :(得分:0)

如果单击按钮进入函数,如果它非常简单,而不是尝试触发单击事件,只需触发按钮正常触发的函数,您也可以分解您想要发生的代码。 / p>