jQuery单击事件未触发自定义事件处理程序

时间:2014-12-09 15:38:34

标签: javascript jquery

我使用一个jQuery库,它动态地创建一个带有点击事件的链接,如:

$parent.append('<div class="add-row"><a href="javascript:void(0)">Add another contact</a></div>');
addButton = $parent.find("div:last a");

addButton.click(function(e){
    e.preventDefault();
    load_contact_creation_form();
});

我想在页面中添加一些代码,因此当URL包含特定标志时,addButton.click事件会自动触发。

使用Firefox / Chrome调试工具进行检查,我可以轻松找到以下链接:

$('.add-row a')

但是,尝试使用$('.add-row a').click()点击它不会触发自定义“点击”事件。

为什么.click()和真正的鼠标点击之间存在差异?在这种情况下,如何触发自定义click事件处理程序?生成链接的代码是外部库,因此我无法轻易修改它。

2 个答案:

答案 0 :(得分:0)

它似乎对我有用。检查这个小提琴:http://jsfiddle.net/d3s8topL/

$("#addDiv").click(function (){

    $("#test").append('<div class="add-row"><a href="javascript:void(0)">Add another contact</a></div>');
    var addButton = $("#test").find("div:last a");

    addButton.click(function(e){
        e.preventDefault();
        alert("asdasd");
    });

});

$("#triggerClick").click(function () {

    $(".add-row a").click();
});

答案 1 :(得分:0)

您需要MutationOberserver,但Mutation Observer API仅适用于较新版本的Google Chrome(&gt; = 18)和Mozillza Firefox(&gt; = 14)。所以你可以使用jQuery plugin。使用插件,你可以做

$('.add-row').observe("childlist", "a", function(){
   $(this).click(); // trigger
});