听取元素前置

时间:2013-04-02 14:31:16

标签: javascript jquery listener

我有一些动态预先添加到我网站上某个区域的元素,但我需要先注意一些内容,因此它可以触发事件。

元素前缀如此

something.prependTo('#area')

前置元素就像这样

<div id="box1" class="box new">

我已经尝试过以下各项但没有运气......

$('.new').on(playSound());
$('.new').bind('DOMSubtreeModified', playSound());
$('.new').each(playSound());
$('.new').live(playSound());
$('.new').livequery(playSound());

当页面最初加载时播放声音,但不会在元素前置时播放。

3 个答案:

答案 0 :(得分:2)

$('#area').on('DOMNodeInserted', function(e) {//whenever an element is inserted
    if ($(e.target).is('.new')) {             //check if it has the right class
        playSound();                          //and play sound
    }
});

它不能在IE中工作,因为没有支持,如果我没记错,突变事件已被弃用,所以不能保证未来的支持吗?

答案 1 :(得分:1)

我会说:

function prependWithSound(something){
    something.prependTo('#area')
    playSound();
}

然后拨打prependWithSound(something)而不是something.prependTo('#area')

为什么要让生活更加艰难呢?

答案 2 :(得分:1)

LiveQuery会这样做,但正如@Bergi指出的那样,你必须删除这些:

$('.new').livequery(playSound);

Here's an example.