【发布时间】:2012-10-03 12:40:30
【问题描述】:
这是场景,我的内容是基于一个类异步加载的。因此,如果我有与 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');
}
});
});
});
都很可爱。现在在一个实例中,我想向confirm 的用户显示一个警告,他们想要加载页面并放弃所有更改,所以我写了这个:
$('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>
【问题讨论】:
-
你的 html 是什么样的?
-
我不明白您为什么要通过将 2 个不同的事件绑定到同一个元素来执行此操作。我只会显示/不显示确认消息,具体取决于单击了哪个元素,但都在同一个单击事件中(例如使用 hasClass if)
-
当然是相关的,只是现在我们才知道只有一个
atag 有几个类,并且您将两个点击处理程序绑定到同一个标签。 -
@ThOrndike 我想我可以这样做,但它不是很优雅。 ajax 链接代码有效,似乎很遗憾用大量 if else 混淆它
-
两个
$(..).click()调用的执行顺序是否与您在帖子中所写的顺序相同?