.live工作,但没有工作

时间:2013-06-08 01:44:14

标签: jquery dialog live

如果我正在使用.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;
            });

1 个答案:

答案 0 :(得分:1)

我认为您的元素是动态添加到DOM的,因此您需要使用.on()使用事件委派。您应该尝试在任何给定时间使用DOM中存在的任何其他容器来将事件委托给document,而不是#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获得)。