0

サイトの領域に動的に先頭に追加される要素がありますが、先頭に追加されたときに何かをリッスンしてイベントを発生させる必要があります。

要素は次のように先頭に追加されます

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());

ページが最初に読み込まれるときにサウンドが再生されますが、要素が先頭に追加されるときは再生されません。

4

3 に答える 3

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 では動作しません。正しく覚えていれば、ミューテーション イベントは廃止されているため、将来のサポートの保証もありません。

于 2013-04-02T14:44:13.983 に答える
1

LiveQueryはそれを行いますが、@ Bergiが指摘したように、括弧を削除する必要があります:

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

例を次に示します。

于 2013-04-02T14:57:38.783 に答える
1

私はこう言います:

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

そして、 prependWithSound(something)の代わりに 呼び出しますsomething.prependTo('#area')

なぜ人生をより困難にするのですか?

于 2013-04-02T14:35:59.440 に答える