.on事件在加载而不是单击时触发

时间:2012-09-14 18:55:32

标签: jquery dynamically-generated-co

好的我是jquery的新手并且已经取得了相当大的进步但是这个让我很难过。我有一个事件处理程序我绑定到一个动态加载的div来处理点击悬停等但是当我尝试绑定一个自定义函数时,它会在加载而不是单击时触发它。

function AddUser(){
       alert('Hi');
       if ($section !== 'addUser'){
           $section = 'addUser';        
       $('.userPanel').empty();
       $('.userPanel').load('pages/addUser.html');
       }
       else{return;}
    }

    $(document).on("click", "a.addUser", AddUser());

但是,如果我在.on绑定中定义一个事件,它可以正常工作

        $(document).on("click", "a.addUser",function(){
        alert('Hi');
    });

我可能错过了一些基本的东西,但这让我整个早上都感到沮丧,所以任何帮助都会受到赞赏。

注意:我意识到绑定到文档是通用的,我应该绑定到我的一个静态父div,它只是我在测试时所做的更改。

提前致谢。

5 个答案:

答案 0 :(得分:8)

变化:

$(document).on("click", "a.addUser", AddUser());

$(document).on("click", "a.addUser", AddUser);

通过在AddUser中添加括号,您可以在代码中的那一点上有效地调用它。

答案 1 :(得分:3)

$(document).on("click", "a.addUser", AddUser);

$(document).on("click", "a.addUser", function(){
   AddUser();
 });

答案 2 :(得分:2)

只需从AddUser()

中删除括号即可
$(document).on("click", "a.addUser", AddUser);

答案 3 :(得分:1)

更改

$(document).on("click", "a.addUser", AddUser());

$(document).on("click", "a.addUser", AddUser);

因为AddUser()是自我调用的并且在页面加载后执行。

OR

$(document).on("click", "a.addUser", function(){
  AddUser();
});

因为function() { AddUser(); }不是自我调用的块,并且会在事件发生时执行其中的所有内容。

答案 4 :(得分:0)

使用函数签名,否则你将调用函数.. 将其更改为

$(document).on("click", "a.addUser", AddUser);

<强> Demo