我想帮你解决你的问题,但前提是错误的。您不应该尝试在 jQuery 中执行此操作。也许你的 CSS 有问题,最好尝试使用 CSS 解决它。
话虽如此,让我们回顾一下您的代码的一些问题:
(1) 不要使用 $( 选择器 ).each()
当你调用 jQuery
$( selector );
这个小家伙返回了一个包含所有与选择器的 css 匹配的元素的数组。
可能有 200 个元素,甚至 1000 个元素,但永远不会.each()
调用,除非您倾向于以独特的方式显式更改每个单独的元素。
$( selector ).each()
在匹配的选择器数组上运行一个 for 循环,如果匹配的集合太大,这会给你带来性能问题。
要更改所有匹配的元素,您只需执行以下操作:
$( selector ).css('margin-bottom', '1.25em');
阅读更多关于 .each()
(2) 不要使用 Javascript(或 jQuery)来做 CSS 的工作
从您的问题来看,您似乎遇到了间距问题。CSS 有多种 方法可以使用诸如,之 类的规则来解决此问题 ,您应该在使用脚本之前对其进行探索。overflow
white-space
text-overflow
(3) 避免使用 .css()
您应该避免使用该$( selector ).css()
函数,因为它也会引入性能问题,尤其是在大型集合上。相反,您应该创建一个可以应用于集合并使用的类:
$( selector ).toggleClass( 'myclass' );
//or
$( selector ).addClass( 'myclass' ); //and
$( selector ).removeClass( 'myclass' );
因为这些功能更高效。
更进一步,不要将类应用于每组匹配元素,而是将类添加到父元素并让子元素从更新的父类继承样式。
阅读更多关于toggleClass()
(5) 遵守约定
虽然在命名 CSS 规则时使用大写字母是完全可以的,但您可能应该避免这种做法,因为这不是标准做法。拥有标准实践的全部意义在于,每个人都可以查看您的代码并确切知道发生了什么,这使您的代码更易于调试和共享。
(6) 不要试图用过度设计的解决方案来弥补糟糕的设计
还要考虑到,有时,如果您唯一的解决方案是编写样式脚本,则需要更改要求。
我遇到过项目经理想要完成的工作在技术上不可行的情况。如果他们希望在有限的区域内显示大量文本,他们需要允许滚动条之类的东西,或者考虑对文本块保持标准大小限制。
回到这个项目的利益相关者那里,告诉他们他们想做的事情是不合理的,并一起做出决定以更好地设计这个小部件。
作为一名开发人员,你不应该允许不合理的要求,有些东西只需要重新设计,而不是让你想出一个乱七八糟的方法来解决糟糕的设计。
结论
就您的问题而言,请使用专门解决您遇到的间距问题的 CSS 规则(溢出、文本溢出等)。您可能需要更深入地研究样式以找到更好的方法来做到这一点。