在 ajax 的承諾完成之前,如何防止對元素的額外點擊?
元素本身不是按鈕
我想防止點擊.my_button:
$(document).on('click', '.my_button', function () {
$.ajax({
})
.done(function (data, textStatus, jqXHR) {
})
.fail(function () {
})
.always(function () {
// enable clicks again
})
});
系結/取消系結可以嗎?如果是這樣,我無法找到正確的語法
uj5u.com熱心網友回復:
禁用按鈕,然后在回呼函式中啟用它。
$(document).on('click', '#my_button', function() {
let button = this;
button.disabled = true;
$.ajax({
})
.done(function(data, textStatus, jqXHR) {
})
.fail(function() {
})
.complete(function() {
button.disabled = false;
})
});
uj5u.com熱心網友回復:
您可以簡單地使用標志來跟蹤操作是否正在進行。例如:
let isFetching = false;
$(document).on('click', '#my_button', function () {
// return early if already running
if (isFetching) {
return;
}
// update the value
isFetching = true;
$.ajax({
})
.done(function (data, textStatus, jqXHR) {
})
.fail(function () {
})
.complete(function () {
// reset the value
isFetching = false;
})
});
基本上,與其試圖阻止點擊本身或通過解除系結/重新系結使事情復雜化,如果您正在跟蹤它當前正在進行中,只需不要執行該操作。
uj5u.com熱心網友回復:
您可以使用按鈕的活動狀態創建變數并像這樣切換它:
let isButtonEnabled = true;
$(document).on('click', '.my_button', function () {
if (!isButtonEnabled) return;
isButtonEnabled = false;
$.ajax({
})
.done(function (data, textStatus, jqXHR) {
})
.fail(function () {
})
.always(function () {
// enable clicks again
isButtonEnabled = true;
})
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480794.html
標籤:jQuery
