我需要基於從PHP返回的JSON(我使用MySQL從數據庫中獲取該信息)創建一些按鈕。下面的代碼通過創建我需要的按鈕來工作,但由於某種原因,只有當我點擊列表中的第一個按鈕時纔會調用點擊處理程序。任何想法爲什麼處理程序不會觸發所有按鈕,我該如何修復它?jQuery點擊處理程序不會觸發所有元素
$(document).ready(function() {
$.ajax({ url: "file.php", data: "id=1", dataType: "json", type: "post",
success: function(data) {
$.each(data, function(index, element) {
var classBtns="";
$.each(return_array(element.date), function(i, d) {
class_button = "<span class='button' id='classBtn' data-date='"+d+"' data-time='"+element.time+"'>Press</span>";
classBtns += "<p class='goingDates'>"+d+class_button+"</p>";
});
$('div').append(classBtns);
});
$("#classBtn").on("click", function() {
alert("clicked "+$(this).data('date'));
});
}
});
});
另外,通過$(this).data傳遞數據是獲得我需要的數據到點擊處理程序的最佳方式嗎?如果可能的話,我更希望它不能在HTML中可見,但我無法弄清楚爲什麼要讓處理程序可以訪問該數據。如果我將click處理程序放入任何$ .each語句中,則單擊按鈕時會多次調用該警報。
這是因爲您正在使用ID選擇器而不是CLASS – Nazariy