我需要基于从 php 返回的 JSON 创建许多按钮(在其中我使用 MySQL 从数据库中获取该信息)。下面的代码通过创建我需要的按钮来工作,但由于某种原因,只有当我单击列表中的第一个按钮时才会调用单击处理程序。任何想法为什么处理程序不会为所有按钮触发以及如何修复它?
$(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 中不可见,但我不知道为什么要让处理程序访问该数据。如果我将单击处理程序放在任何 $.each 语句中,则单击按钮时会多次调用警报。