我正在網上購物。我有一個按鈕「添加產品」ID爲#sendProduct。點擊此按鈕後,必須將ID更改爲#deleteProduct。它改變了ID,但舊的處理程序在ID更改後仍然處於活動狀態。我的意思是當我再次點擊按鈕時,它就像id一樣沒有改變。 看看我的代碼。根據我在評論建議實時更改元素ID
$(document).ready(function() {
$('#sendProduct').on('click', function() {
var id = $(this).attr('data-id');
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.ajax({
url: '/cart/add-to-cart',
method: 'POST',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(id),
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
dataType: 'json',
success: function (id) {
$('#sendProduct').text('Delete from cart');
$('#sendProduct').attr('data-id', id);
$('#sendProduct').attr('id', 'deleteProduct');
console.log($('#deleteProduct').attr('id'));
}
});
});
$('#deleteProduct').on('click', function() {
var id = $(this).attr('data-id');
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.ajax({
url: '/cart/delete-product',
method: 'GET',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(id),
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
dataType: 'json',
success: function (id) {
$('#deleteButton').text('Add product');
$('#deleteButton').attr('data-id', id);
$('#deleteButton').attr('id', 'sendProduct');
}
})
})
});
更改節點的ID不會刪除其現有的處理程序。你究竟在做什麼? – smarx
瀏覽你的代碼,我認爲一個更好的解決方案只是有兩個按鈕,一次只能看到其中一個按鈕。點擊時只需切換其可見性。 – smarx
或者,如果需要,他可以在成功承諾上創建一個新的事件處理程序。 –