Jquery 每个循环中的while循环导致页面崩溃

Jquery 每个循环中的while循环导致页面崩溃,jquery,Jquery,我试图在JQuery中的each循环中执行while循环,但这会导致页面崩溃。这段代码可以用另一种方式编写吗?我试图做的是在多个元素中有多行文本溢出时添加省略号 HTML <div class="three-col-three-img-txt"> <div class="txt-block"> <div class="txt-entries"> <div class="txt-entries-wrap"&g

我试图在JQuery中的each循环中执行while循环,但这会导致页面崩溃。这段代码可以用另一种方式编写吗?我试图做的是在多个元素中有多行文本溢出时添加省略号

HTML

<div class="three-col-three-img-txt">
    <div class="txt-block">
        <div class="txt-entries">
            <div class="txt-entries-wrap">
                <p>Lorem ipsum</p>
            </div>
        </div>
    </div>
    <div class="txt-block">
        <div class="txt-entries">
            <div class="txt-entries-wrap">
                <p>Lorem ipsum</p>
            </div>
        </div>
    </div>
    <div class="txt-block">
        <div class="txt-entries">
            <div class="txt-entries-wrap">
                <p>Lorem ipsum</p>
            </div>
        </div>
    </div>
</div>

你不需要while循环,因为这就是你的
.each()
函数所做的-它将逐个遍历每个
.triple col three img text.txt块

相反,尝试使用
IF
语句:

if( $(ph).outerHeight() > divh ){
     $(p).text(function (index, text) {
          return text.replace(/\W*\s(\S)*$/, '...');
     });
}
或者-如果您试图完成的是循环通过每个
.txt条目.txt条目包装
,则应再次使用
.each()
函数,如下所示:

$(ph).each(function(){
    if($(this).outerHeight() > divh) {
        //do stuff
    }
});

似乎您需要循环遍历每个
.txt块
,然后再循环遍历每个
.txt条目
。。如果是这种情况,您需要这样做:

$(document).ready(function(){
    $( ".txt-block").each(function() {
        $(this).find('.txt-entries').each(function() {
            var ph = $(this).find('.txt-entries-wrap');
            var p = $(this).find('.txt-entries-wrap p');
            var divh = $(this).height();
            if ($(ph).outerHeight() > divh) {
                $(p).text(function (index, text) {
                     return text.replace(/\W*\s(\S)*$/, '...');
                });
            }
        });
    });
});

你想在这里完成什么?据我所知,您的循环并没有任何效果,因为
.txt entries.txt entries wrap
不存在。当
while
循环条件不变时——换句话说,当条件不可能为
FALSE
时——结果是一个
有限循环。无限循环通常会破坏浏览器:(将所有内容包装在
$(document).ready(函数(){…您的jquery代码…})中)
您应该将
while
循环更改为
if
循环。
while
循环将持续运行,直到条件为假。我们也需要查看css,因为这可能会影响此代码的结果。此外,基于您的js,您的示例html似乎缺少一些元素。我认为您误解了目的在这个例子中是while循环。他循环直到div的高度大于x,在循环内部,他做了一些理论上的事情(取决于css)将增加高度。@KevinB可能是-需要OP对他们试图实现的目标进行更多的澄清。只是根据我的想法提出建议。明确的问题是存在一个无限循环。向OPit添加更多的澄清需要时间,而不是如果,否则它不起作用
$(document).ready(function(){
    $( ".txt-block").each(function() {
        $(this).find('.txt-entries').each(function() {
            var ph = $(this).find('.txt-entries-wrap');
            var p = $(this).find('.txt-entries-wrap p');
            var divh = $(this).height();
            if ($(ph).outerHeight() > divh) {
                $(p).text(function (index, text) {
                     return text.replace(/\W*\s(\S)*$/, '...');
                });
            }
        });
    });
});