我认为我的代码正在创建一个无限循环。
我试图解决的问题是有些文本元素有时太宽,但调整所有文本的大小会使其中的一些非常小。
我的解决方案是转到每个标头('.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。
答案 0 :(得分:5)
由于h1
是一个块元素,因此无论字体大小如何,它都会占用容器的宽度,除非指定。这意味着如果迭代至少一次,while循环将永远不会为假。
如果您希望h1
获取内容宽度,则需要将其设置为显示内联块,浮动它或通过绝对定位将其从包装中取出。
这是一个例子:http://jsfiddle.net/fWtwL/
某些代码已被修改。
答案 1 :(得分:0)
如果更改字体大小不会使h1
的宽度小于容器的宽度,则while循环可以是/将是无限循环。尝试while (jQuery(this).width() > jQuery(container).width() && parseInt(jQuery(this).css('font-size')) > 8)
或类似的东西......
答案 2 :(得分:-1)
问题实际上是你在重复循环上调整字体大小直到它适合。 Javascript无法直接从样式表中提取字体大小值,因此每次while循环运行时都会花费大量时间尝试解析样式表。