【发布时间】:2011-08-17 22:05:17
【问题描述】:
我的 MVC 视图中有一堆链接和一个下拉选择器的 jquery 点击事件,我在执行事件之前对它们进行了默认设置,因为它们中的大多数重定向到视图(重定向停止我的 jquery 代码不会不是吗?)。在点击事件中的所有回调之后,我希望链接和下拉选择器执行它们的默认事件,这样它就不会像什么都没发生一样坐在页面上。
有没有一种简单的方法可以让所有链接/下拉菜单返回默认值,然后以编程方式在 jquery 中单击它们?我试过 $(this).click() 和 $(this).submit() 和 e.click() 和 e.submit() 没有运气。
这是我的代码
$("input,a,select").not("#SubmitButton").click(function (e) {
e.preventDefault();
console.log("prevented default");
deletePreview($(this));
});
function deletePreview(button) {
console.log("clicked");
//Delete Offer from DB
$.post('@Url.Content("~/")Offer/DeleteJoAnnOffer/?offerId=' + offerID, function (data) {
console.log("finished deleting");
if (button.attr('id') == "CancelButton") {
window.location.href = '@Url.Content("~/")Offer/CreateJoAnn/';
} else {
//DO DEFAULT ACTION HERE
}
});
};
[编辑]:还有一个问题:如果我不使用 preventDefault(),我的 jquery 事件会执行(以及初始部分,因为我的控制台记录了“点击”),但我无法确认 jquery 帖子是否实际正在执行因为控制台会在新页面上刷新。
【问题讨论】:
-
好问题。我也想知道这个:)
-
第二个问题:如果后执行速度不够快,它的请求可能会被取消(请求中止)。所以它可能会也可能不会被执行。如果你把你的ajax请求变成同步的,就不会有这个问题了。
标签: jquery asp.net-mvc-3 callback click preventdefault