我在api.jquery.com和我的脚本上浪费了1个小时来识别问题但仍无法解决问题。
这是我的 script.js
// DOM ready
$(function(){
// gets categories from server
$.post("category.php", function(data) {
$("#category ul").html(data);
});
// tests click event
$("a").click(function(evt) {
alert("Handler for .click() called.");
evt.preventDefault();
});
});
在index.php中,有4个锚标记,前三个从服务器加载,如脚本中所示,最后一个是预加载的(静态)(未从服务器加载)。问题是我在jQuery选择器中选择了所有的锚元素,你可以在脚本中看到,但我的事件只使用预先加载的最后一个锚标记。怎么了 ?为什么事件不能使用前三个锚标签?
答案 0 :(得分:4)
尝试使用on
$('body').on('click', 'a', function(evt) {
alert("Handler for .click() called.");
evt.preventDefault();
});
答案 1 :(得分:3)
尝试:
$(document).on('click', 'a', function (){
//do something
});
这会将处理程序绑定到当前存在的所有锚标记以及将来动态添加的任何锚标记。
答案 2 :(得分:1)
$(function(){
// gets categories from server
$.post("category.php", function(data) {
$("#category ul").html(data);
// tests click event
$("a").click(function(evt) {
alert("Handler for .click() called.");
evt.preventDefault();
});
});
});
你必须等到ajax邮件请求准备就绪!
问候!