javascript - jQuery 未捕获范围错误 : Maximum call stack size exceeded in google chrome

标签 javascript jquery

我的代码如下所示:

jQuery('.views-row').each(function(){
    if(jQuery(this).find('.views-field-field-doctor-indicator').length != 0) {
        jQuery(this).css("padding","0px");
        jQuery('.views-field-title span a', this).css("color","#00476b");
        jQuery('.views-field', this).wrapAll('<div class="physician-indicator"></div>');
    } 
});

但意识到,由于页面中存在一些 ajax,因此在用户按 Enter 进行搜索后,它不会继续工作。你基本上可以看到它的作用,但是解释得更人性化一点,它基本上是用来对医生进行排序,并为需要的医生添加某些属性。

我尝试使用这个:

jQuery('#block-views-homepage-redo-block').bind('DOMNodeInserted', function(){
    var target = jQuery(this);
    jQuery('.views-row', target).each(function(){
        if(jQuery(this).find('.views-field-field-doctor-indicator').length != 0) {
            jQuery(this).css("padding","0px");
            jQuery('.views-field-title span a', this).css("color","#00476b");
            jQuery('.views-field', this).wrapAll('<div class="physician-indicator"></div>');
        } 
    });
});

在我看来非常相似,只是每当内容发生变化时它都会做同样的事情。但是,我收到此错误:

jQuery Uncaught RangeError: Maximum call stack size exceeded

我大部分情况下都理解该错误的含义,但我不明白是什么会对破坏页面产生如此大的影响。

--- 编辑 ---

这对我有用。我添加了另一个检查来查看 div 是否已经创建。这允许代码跳过我首先需要创建的 div 的任何内容。

jQuery('#block-views-homepage-doctors-redo-block').bind('DOMNodeInserted', function(){
    var target = jQuery(this);
    jQuery('.views-row', target).each(function(){
        var switchTarget = jQuery(this);
        if(!switchTarget.children().hasClass('physician-indicator')) {
            if(jQuery(switchTarget).find('.views-field-field-doctor-indicator').length != 0) {
                jQuery(switchTarget).css("padding","0px");
                jQuery('.views-field-title span a', switchTarget).css("color","#00476b");
                jQuery('.views-field', switchTarget).wrapAll('<div class="physician-indicator"></div>');
            } 
        }
    });
});

最佳答案

每次插入元素时都会插入一个元素,因此它基本上是一个插入元素并填满调用堆栈的无限循环。

wrapAll 触发 DOMNodeInserted,触发另一个 wrapAll,触发另一个 DOMNodeInserted,就这样......

关于javascript - jQuery 未捕获范围错误 : Maximum call stack size exceeded in google chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847200/

相关文章:

javascript - 小费计算器结果为 NaN

javascript - 如何防止 jQuery 在 XML 对象中插入 'xmlns' 属性?

jquery - 如何在执行 jquery 代码时修复浏览器

javascript - 在 Apex 表格表单中选择一系列复选框(使用 jQuery)

javascript - 提交表单时删除模式主体

javascript - 在jquery中获取选择框名称

javascript - iron-request 不会提出超过一个请求

jquery查找和替换文本,没有元素id

jquery - 在 Visual Studio 2008 中对 JavaScript 进行单元测试

javascript - jQuery 自动完成列表设置为显示 :none;