Javascript JS代码使IE9和Safari冻结,在Opera中不起作用?

Javascript JS代码使IE9和Safari冻结,在Opera中不起作用?,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我不知道为什么,但这段代码使IE9和Safari崩溃,在Opera中根本不起作用 $('#contentPage').on('DOMSubtreeModified', function(){ if($(".iframey[date-current]").length){ $(".iframey:not(.hidden)").prevUntil("iframe").addClass('smaller'); }}); 我应该怎么做才能使这段代码在所有浏览器中都工作 ---编辑---

我不知道为什么,但这段代码使IE9和Safari崩溃,在Opera中根本不起作用

$('#contentPage').on('DOMSubtreeModified', function(){
    if($(".iframey[date-current]").length){
    $(".iframey:not(.hidden)").prevUntil("iframe").addClass('smaller');
}});
我应该怎么做才能使这段代码在所有浏览器中都工作

---编辑---

jsfiddle中的代码


在chrome和firefox中工作

如果要在dom修改事件处理程序中修改dom,则应检查修改是否是由于处理程序中的代码造成的,以防止出现无休止的循环

警告!本规范中定义了DOMSubtreeModified事件类型以供参考和完整性,但本规范不推荐使用此事件类型


穆萨所说的是正确的。有一个无限循环。您是否有任何理由需要在
domsubtreemedited
中处理它?你不能改为在点击事件中完成工作吗?这似乎表现相同:

$(".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');
    }
});

崩溃是什么意思?整个浏览器关闭/挂起,或者代码什么也不做,或者…?您是否尝试过使用分号
在所有内容的末尾(因此它以
}结束)?从技术上讲,这就是为什么。。。它基本上在任何浏览器中都不工作?(-FF)-nnnnnn浏览器冻结,必须通过任务管理器关闭。您最好调试代码,比如使用firebug for FF或Chrome的inspector。他们应该告诉您js代码中存在哪些问题。