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(). 您应该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 回答