0

理由はわかりませんが、このコードにより IE9 と Safari がクラッシュし、Opera ではまったく機能しません。

$('#contentPage').on('DOMSubtreeModified', function(){
    if($(".iframey[date-current]").length){
    $(".iframey:not(.hidden)").prevUntil("iframe").addClass('smaller');
}});

このコードをすべてのブラウザーで機能させるにはどうすればよいですか?

- -編集 - -

jsfiddle のコード

http://jsfiddle.net/rzP5S/

クロムとファイアフォックスでの作業格子

4

2 に答える 2

2

dom変更イベントハンドラーでdomを変更しています。無限ループを防ぐために、変更がハンドラーのコードによるものかどうかを確認する必要があります。

また

警告!DOMSubtreeModifiedイベントタイプは、参照と完全性のためにこの仕様で定義されていますが、この仕様では、このイベントタイプの使用は推奨されていません。

http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified

于 2012-08-26T03:55:40.050 に答える
0

@Musa が言っていることは正しいです。無限ループがあります。で処理する必要がある理由はありますDOMSubtreeModifiedか? 代わりにクリックイベント内で作業を行うことはできませんか? これは同じように動作するようです:

$(".onePost").live("click", function() {

    $(".onePost").removeClass('smaller');

    $("iframe")
        .addClass('hidden')
        .removeAttr('src')
        .removeAttr('date-current');

    $(this).nextAll("iframe:eq(0)")
        .removeClass('hidden')
        .removeAttr('style')
        .attr({src: $(this).data('href')})
        .attr('date-current', 'here');

    if($(".iframey[date-current]").length){
        $(".iframey:not(.hidden)").prevUntil(".iframey").addClass('smaller');
    }
});

http://jsfiddle.net/rPPSj/

于 2012-08-26T06:03:00.027 に答える