jQuery .每个函数创建无限循环
jQuery .each function creating infinite loop?
我认为我的代码正在创建一个无限循环。
- 页面加载未完成。
- 它"锁定",Chrome被迫杀死违规页面。
- 控制台不刷新,所以我无法读取错误。
我想解决的问题是有一些文本元素有时太宽,但调整所有文本的大小会使其中一些真的很小。
我的解决方案是去每个标题('.mftitle h1')
,并将其与始终可接受的宽度的容器('.ut-one-third')
进行比较。如果标题比容器宽,那么它会减小字体大小,直到它不再比容器宽为止。
jQuery( document ).ready(function() {
jQuery('.mftitle h1').each(function() {
var container = jQuery(this).closest('.ut-one-third');
while( jQuery(this).width() > jQuery(container).width() ) {
jQuery(this).css('font-size', (parseInt(jQuery(this).css('font-size')) - 1) + "px" );
}
});
});
谢谢你的帮助!我难住了。如果这是一个糟糕的解决方案,我很抱歉,我正在自学jQuery。
由于h1
是块元素,无论font-size如何,它都将取容器的宽度,除非指定。这意味着如果while循环至少迭代一次,则它永远不会为false。
如果你想让h1
占用内容宽度,你需要将其设置在display inline-block中,浮动它或通过绝对定位将它从框中取出。
下面是一个例子:http://jsfiddle.net/fWtwL/
部分代码已修改
如果更改字体大小不会使h1
的宽度小于容器的宽度,则while循环可以/将是一个无限循环。试试while (jQuery(this).width() > jQuery(container).width() && parseInt(jQuery(this).css('font-size')) > 8)
或类似的东西…
问题实际上是您在重复循环中调整字体大小直到合适为止。Javascript不能直接从样式表中提取font-size值,因此每次while循环运行时,它都会花费大量时间来解析样式表。
相关文章:
- 将画布动画转换为requestAnimationFrame将创建无限循环
- jQuery 脚本在 Firefox 中创建无限循环(仅限)
- setTimeout 会创建一个无限循环
- 是什么在我的 ajax 代码中创建无限循环
- 为什么“;window=window.parent"创建一个无限循环
- 如何在不创建无限循环的情况下从事件处理程序中激发事件触发函数
- 如何在JavaScript中创建具有延迟的无限循环
- 两个同步事件创建了一个无限循环
- 我想用jquery创建无限循环图像库
- addEventListener创建了一个无限循环
- 如何在JavaScript中创建无限循环
- FB.Canvas.setAutoGrow()不起作用并创建高度变化的无限循环
- 创建无限页内容循环
- 在Jquery中创建一个无限循环
- 使用requestAnimationFrame创建无限事件循环是否有性能成本?
- 我可以使用setTimeout创建一个廉价的无限循环吗
- 为什么这段代码创建了一个无限循环?
- Select2 trigger("change")创建一个无限循环
- jQuery .每个函数创建无限循环
- 防止此页创建导致无限循环的额外对话框