如何终止 jquery 中的函数?
How to terminate a function in jquery?
伙计们,我的 jQuery 代码有问题 我写了一些代码,当单击按钮时发出 ajax 请求,但单击按钮时出现问题 jQuery 为是确认按钮添加事件监听器,当我单击否时它仍然监听是按钮所以当我在其他按钮上单击是时它提交 ajax 请求两次所以我想终止该功能当用户没有点击任何按钮时。
这是我的代码 ->
function confirmDelete(id, dataType) {
$(".overlay").fadeIn();
$(".confirmDelete").fadeIn();
$(".confirmDelete").css("display", "flex");
$(".overlay").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
});
$("#confirmDeleteYes").click(function (e) {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
$.ajax({
url: "/delete/" + dataType + "/" + id,
type: "DELETE",
data: {
_token: $('meta[name="csrf"]').attr("content"),
},
success: function (data) {
activateNotificationSuccess(data.message);
$(".closeSnackBar").click(function () {
$(this).parent().remove();
});
$("#" + dataType + data.id).remove();
},
error: function (error) {
console.log(error);
activateNotificationFail("Something went very wrong !!");
},
});
});
$("#confirmDeleteNo").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});
}
有人有解决办法吗?
我找到了解决方案。实际上问题是我嵌套了点击事件所以我只是把它从第一个主要点击事件中取出并且它工作正常而且我把所有代码都放在了函数之外。这是我的最终代码 ->
let targetId;
$(".deleteButton").click(function () {
targetId = $(this).attr("target-id");
$(".overlay").fadeIn();
$(".confirmDelete").fadeIn();
$(".confirmDelete").css("display", "flex");
});
$(".overlay").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});
$("#confirmDeleteYes").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
$.ajax({
url: "/delete/" + "category/" + targetId,
type: "DELETE",
data: {
_token: $('meta[name="csrf"]').attr("content"),
},
success: function (data) {
console.log(data);
activateNotificationSuccess(data.message);
$(".closeSnackBar").click(function () {
$(this).parent().remove();
});
$("#" + "category" + data.id).remove();
},
error: function (error) {
activateNotificationFail("Something went very wrong !!");
},
});
return true;
});
$("#confirmDeleteNo").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});
伙计们,我的 jQuery 代码有问题 我写了一些代码,当单击按钮时发出 ajax 请求,但单击按钮时出现问题 jQuery 为是确认按钮添加事件监听器,当我单击否时它仍然监听是按钮所以当我在其他按钮上单击是时它提交 ajax 请求两次所以我想终止该功能当用户没有点击任何按钮时。
这是我的代码 ->
function confirmDelete(id, dataType) {
$(".overlay").fadeIn();
$(".confirmDelete").fadeIn();
$(".confirmDelete").css("display", "flex");
$(".overlay").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
});
$("#confirmDeleteYes").click(function (e) {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
$.ajax({
url: "/delete/" + dataType + "/" + id,
type: "DELETE",
data: {
_token: $('meta[name="csrf"]').attr("content"),
},
success: function (data) {
activateNotificationSuccess(data.message);
$(".closeSnackBar").click(function () {
$(this).parent().remove();
});
$("#" + dataType + data.id).remove();
},
error: function (error) {
console.log(error);
activateNotificationFail("Something went very wrong !!");
},
});
});
$("#confirmDeleteNo").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});
}
有人有解决办法吗?
我找到了解决方案。实际上问题是我嵌套了点击事件所以我只是把它从第一个主要点击事件中取出并且它工作正常而且我把所有代码都放在了函数之外。这是我的最终代码 ->
let targetId;
$(".deleteButton").click(function () {
targetId = $(this).attr("target-id");
$(".overlay").fadeIn();
$(".confirmDelete").fadeIn();
$(".confirmDelete").css("display", "flex");
});
$(".overlay").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});
$("#confirmDeleteYes").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
$.ajax({
url: "/delete/" + "category/" + targetId,
type: "DELETE",
data: {
_token: $('meta[name="csrf"]').attr("content"),
},
success: function (data) {
console.log(data);
activateNotificationSuccess(data.message);
$(".closeSnackBar").click(function () {
$(this).parent().remove();
});
$("#" + "category" + data.id).remove();
},
error: function (error) {
activateNotificationFail("Something went very wrong !!");
},
});
return true;
});
$("#confirmDeleteNo").click(function () {
$(".overlay").fadeOut();
$(".confirmDelete").fadeOut();
return false;
});