Jquery 每个循环中的while循环导致页面崩溃
我试图在JQuery中的each循环中执行while循环,但这会导致页面崩溃。这段代码可以用另一种方式编写吗?我试图做的是在多个元素中有多行文本溢出时添加省略号 HTMLJquery 每个循环中的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
<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)*$/, '...');
});
}
});
});
});