将类应用于加载Ajax的内容不起作用

时间:2012-03-23 00:54:00

标签: jquery ajax

这是我加载内容的功能:

$("#site-nav .nav1").on('click', function () {
    $(this).addClass("nav-active");
    $('ul.top-level').load('assets/includes/recent.php', function () {
        $(this).show();
    });
    event.preventDefault();
});

该内容加载到ul.top-level罚款。

加载内容后,我尝试将类应用于新加载内容中的任何href:

$("ul.top-level li a").on('click', function () {
    alert("hi");
    $(this).addClass("nav-active");
});

这不起作用,警报消息也不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

值得注意的是,在哪里应用新的click处理程序,因为当您尝试连接它们时,dom很可能没有准备就绪。但是,您可以使用live()来解决此问题。

live()适用于所有未来匹配的选择器,因此如果您加载ajax内容,它应自动将点击处理程序附加到它们。

$("ul.top-level li a").live('click', function () {
    alert("hi");
    $(this).addClass("nav-active");
});

修改:由于不推荐使用live(),您可以使用on()重写实时,而不是:

$(document).on('click', "ul.top-level li a", function () {
    alert("hi");
    $(this).addClass("nav-active");
});