当jquery分配给innerHtml时会触发什么事件

时间:2012-05-29 06:41:43

标签: jquery

当我点击navMenu中的链接时,我有以下代码将一些html(包括锚点)加载到div中。当我单步执行它时,<p>'s被隐藏,但当页面最终出现时它们不会被隐藏。显示页面后,contentClickFunction按预期隐藏/显示<p>'s

我相信我需要像'ready'这样的东西,但是要分配给innerHtml。有没有我可以听的事件,所以我的隐藏呼叫没有被覆盖?

我知道我可以通过添加css设置#content li>p { display:none; }来实现我的目标,但我想了解发生了什么。

$(document).ready(function(){
    $("#content").on("click", "li>a", contentClickFunction);
    $("#navMenu a").click(function(event){
        var href = $(this).attr("href");
        event.preventDefault();
        $.get( href , function(data){
            $("#content").html(data);
        });
        $("#content li > p").hide();
    });
  });

1 个答案:

答案 0 :(得分:2)

DOM ready只触发一次。

您可以使用mutation eventsDOMNodeInserted),但不推荐使用它们。

您还可以创建自定义事件:

function handler(){
    // Do stuff
}

$('#content').on('insert', handler);

$.get( href , function(data){
    $("#content").html(data).trigger('insert');
});

最后一个选项似乎对你最好。