DOM对象创建事件

时间:2013-10-04 09:47:12

标签: javascript jquery

如何在每次创建div时触发一个触发的事件?

我正在思考这个问题,但显然不是。

$("#content").on("create", "div.block", function () {
    $(this).css({"background-color":"#FF0000"});
});

我发现了MutationObserver(https://stackoverflow.com/a/11546242/165737),但正如评论中所见,这在IE中不起作用。

2 个答案:

答案 0 :(得分:0)

你可以使用一个变异事件(DOMNodeInserted)......但IE可能无法完全解决这个问题。

http://jsfiddle.net/kasperfish/AAd8f/

$(function() {
    $('#btn').click(function(){
        $('body').append('<div style="width:30px;height:30px;border:1px solid black"></div>');
    });


    $(document).on('DOMNodeInserted', function(e) {

        $(e.target).addClass('blue');
    });
});

我想要注意,最好使用回调事件而不是监听DOM。在DOM中插入div后,您需要编写回调函数。我不认为还有其他(非hacky)方法可以实现这一目标。

答案 1 :(得分:0)

您可以尝试这样的内容而不是MutationObserver,以便在div.block

添加div#content时收到通知
$(function(){
    var c = $('#content'), l = c.find('.block').length;
    setInterval(function(){
        var lOld = l;
        if(c.find('.block').length > lOld) {
            l = c.find('.block').length;
            c.find('.block').css({"background-color":"#FF0000"});
        }
    }, 100);
});

An example此处another example有多个Background color效果。