如何访问通过ajax加载的div的id

时间:2012-04-24 15:59:22

标签: ajax jquery

我有id = new的按钮,用于加载新页面

$("#new").click(function(){
$('#message_area').load('new.php');
});

new.php中有一个按钮,可以向数据库发送消息。但我有一个问题,它只适用于第一次页面加载,如果我通过ajax导航到一些其他链接,再次使用上面的代码加载new.php然后在new.php发送按钮不起作用我必须刷新页面然后它工作。我认为是因为new.php中的send按钮是在第一次创建DOM后添加的。 请提前帮助谢谢..

4 个答案:

答案 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及更高版本)来分配事件。似乎每个人都打败了我的代码,但我会发布这个链接到函数。