这是情景描述,我的内容基于一个类异步加载。所以如果我有一个带有ajaxLink类的链接,它将按照以下方式触发:
$('a.ajaxLink').click(function (e) {
e.preventDefault();
var container = $(this).parents('div.fullBottomContent');
var href = $(this).attr('href');
container.fadeOut('fast', function () {
$.ajax({
url: href,
dataType: "html",
type: "GET",
success: function (data) {
container.html(data);
BindEventHandlers();
container.fadeIn();
$.validator.unobtrusive.parse('form');
},
error: function () {
alert('An error has occurred');
}
});
});
});
一切都很好。现在有个情况是,我想向用户显示一个警告框,确认
他们是否要加载页面并丢失所有更改,因此我编写了以下代码:
$('a.addANewHotel').click(function (e) {
if (!confirm('Adding a new hotel will loose any unsaved changes, continue?')) {
e.stopPropagation();
}
});
我已经尝试过return false
, e.preventDefault()
和 e.stopPropagation();
,但不管怎样,第一种方法总是被触发?如何防止多余的点击事件被触发?这是一个事件顺序的问题吗?
我不认为这和我的HTML有关:
<a style="" href="/CMS/CreateANewHotel?regionID=3&destinationID=1&countryName=Australia" class="button wideBorderlessButton ajaxLink addANewHotel">Add a new hotel</a>
a
标签,并且你将两个点击处理程序绑定到同一个a标签。 - Asciiom$(..).click()
调用是按照相同的顺序执行的吗? - FixMaker