我有id = new的按钮,用于加载新页面
$("#new").click(function(){
$('#message_area').load('new.php');
});
new.php中有一个按钮,可以向数据库发送消息。但我有一个问题,它只适用于第一次页面加载,如果我通过ajax导航到一些其他链接,再次使用上面的代码加载new.php然后在new.php发送按钮不起作用我必须刷新页面然后它工作。我认为是因为new.php中的send按钮是在第一次创建DOM后添加的。 请提前帮助谢谢..
答案 0 :(得分:3)
您需要发布标记的更多详细信息以获得更准确的答案,但一般的想法是使用事件委派。将事件处理程序绑定到不从DOM中删除的按钮的祖先。例如:
$("#message_area").on("click", "#yourButton", function() {
//Do stuff
});
这是有效的,因为DOM事件通过所有元素祖先在树上冒泡。在这里,您只需捕获树上方的事件,并检查它是否来自您感兴趣的内容(#yourButton
)。
有关更多信息,请参阅jQuery .on
。请注意,如果您使用的是低于1.7的jQuery版本,则需要使用delegate
代替。
答案 1 :(得分:1)
//jquery >= v1.7
$("body").on('click', '#new', function(){
$('#message_area').load('new.php');
});
//jquery < v1.7
$("#new").live('click',function(){
$('#message_area').load('new.php');
});
答案 2 :(得分:0)
$("#new").live("click", function(){
$('#message_area').load('new.php');
});
刚刚意识到这已被弃用了 - 应该使用而不是......我的不好。
答案 3 :(得分:0)
要管理这样的动态创建元素,您需要使用.on()(jQuery 1.7及更高版本)或.delegate()(jQuery 1.4.3及更高版本)来分配事件。似乎每个人都打败了我的代码,但我会发布这个链接到函数。