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の1つにバインドする必要があることを認識しています。これは、テスト中に行った変更にすぎません。

前もって感謝します。

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 に答える