1

好的,我是 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 之一,这只是我在测试时所做的更改。

提前致谢。

4

5 回答 5

8

改变:

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

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

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

于 2012-09-14T18:57:11.447 回答
3
$(document).on("click", "a.addUser", AddUser);

或者

$(document).on("click", "a.addUser", function(){
   AddUser();
 });
于 2012-09-14T18:58:11.970 回答
2

只需删除括号AddUser()

$(document).on("click", "a.addUser", AddUser);
于 2012-09-14T18:57:18.547 回答
1

改变

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

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

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

或者

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

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

于 2012-09-14T18:58:03.150 回答
0

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

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

演示

于 2012-09-14T18:58:30.870 回答