0

.live デバッガーを使用している場合、ブロック内に入り、ダイアログが開きますが、.on を使用している場合は開きません。なんで?

 $('#btnCreateNewSet').live("click", function (e) {
                debugger;
                e.preventDefault();
                if(e.handled === true) return false;
                e.handled = true;

                $("#divDialog")
                     .dialog({modal:true})
                  .load("/ClaimAuditAdmin/CreateNewSet");

                return false;
            });

    $('#btnCreateNewSet').on("click", function (e) {
                debugger;
                e.preventDefault();
                if(e.handled === true) return false;
                e.handled = true;

                $("#divDialog")
                     .dialog({modal:true})
                  .load("/ClaimAuditAdmin/CreateNewSet");

                return false;
            });
4

1 に答える 1

1

あなたの要素はDOMに動的に追加されると思うので、を使用してイベント委任を使用する必要があります.on()。headの代わりに、document任意の時点で DOM に存在する他のコンテナーを使用して、イベントを にデリゲートする必要があり#btnCreateNewSetます。そうでない場合は、おそらくハンドラーが document.ready の下にありません$(function(){....});

これを試して:

  $(document).on("click", '#btnCreateNewSet' , function (e) {

                e.preventDefault();
                if(e.handled === true) return false;
                e.handled = true;

                $("#divDialog")
                     .dialog({modal:true})
                  .load("/ClaimAuditAdmin/CreateNewSet");

                return false;
            });

また、jquery のバージョンがサポートされていることも確認してください.on()(1.7 から利用可能)。

于 2013-06-08T01:46:07.670 に答える