如果我正在使用.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;
});
答案 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获得)。