gpt4 book ai didi

javascript - jQuery 在 ajax 调用后重新绑定(bind)点击事件

转载 作者:行者123 更新时间:2023-12-03 08:26:33 24 4
gpt4 key购买 nike

我试图防止点击时出现默认情况,使用ajax调用页面并触发完成后的点击,使用this answer .

<a id="mylink" href="file.csv" download >Dowload</a>

<script>
var flag = false;
$('#mylink').on('click',function(e) {
// Result is the same with :
//$(document).on("click","#mylink",function(e){

if (flag === true) {
flag = false;
return;
}
e.preventDefault();

$.ajax({
url: "index.php?controller=admin&action=refreshFile",
complete: function() {
console.log('control'); // This is called
flag = true;
$('#mylink').trigger('click'); // This is not called
}
});
});
</script>

调用有效,但之后链接未触发。当 ajax 调用设置在单独的函数内时,结果是相同的。

最佳答案

使用window.location调用链接href

$('#mylink').on('click',function(e) {
e.preventDefault();

$.ajax({
url: "index.php?controller=admin&action=refreshFile",
complete: function() {
console.log('control'); // This is called
window.location = $('#mylink').attr("href");
}
});
});

或使用一个事件监听器

var eventListener = function(e) {
e.preventDefault();

$.ajax({
url: "index.php?controller=admin&action=refreshFile",
complete: function() {
console.log('control'); // This is called
$('#mylink')[0].click();
$('#mylink').one('click', eventListener);
}
});
};
$('#mylink').one('click', eventListener);

我不确定您的标志应该做什么。在您的示例中,这意味着该链接仅在每第二次点击时才有效。

P.s.使用complete回调意味着即使ajax失败它也能工作。您可能希望将其更改为成功

更新

@Racil Hilan 有一个观点:当您可以直接调用链接并在调用 refreshFile 操作后返回正确的文件时,此解决方案有点矫枉过正.

关于javascript - jQuery 在 ajax 调用后重新绑定(bind)点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522627/

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