gpt4 book ai didi

jquery - 链接和下拉选择器与 PreventDefault 相反?

转载 作者:行者123 更新时间:2023-12-01 01:28:24 24 4
gpt4 key购买 nike

我在我的 MVC View 中有一个针对一堆链接和一个下拉选择器的 jquery click 事件,并且在执行该事件之前我在它们上阻止了 Default,因为它们中的大多数都重定向到一个 View (重定向会停止我的 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 帖子是否实际执行因为控制台会刷新到新页面。

最佳答案

jquery中的“post”函数是异步操作(异步标志默认为true)。单击事件中的代码将在页面重新加载之前完整执行,因此无需使用 PreventDefault。您必须将deletePreview中的post函数更改为同步:

        $("input,a,select").not("#SubmitButton").click(function (e) {
console.log("you do not need to call prevented default :)");
deletePreview($(this));
});
function deletePreview(button) {
console.log("clicked");
//Delete Offer from DB
$.ajax('@Url.Content("~/")Offer/DeleteJoAnnOffer/?offerId=' + offerID,
{
async: false,
success: function (data) {
console.log("finished deleting");
if (button.attr('id') == "CancelButton") {
window.location.href = '@Url.Content("~/")Offer/CreateJoAnn/';
} else {

//DO DEFAULT ACTION HERE

}
}
});
};

这意味着 click 事件中的代码将等待,直到 deletePreview 中的 ajax 调用完成。

参见http://api.jquery.com/jQuery.ajax/有关异步参数的解释

关于jquery - 链接和下拉选择器与 PreventDefault 相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7100110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com