jQuery将另外两个li的高度设置为与最高的相同的高度
我有这把小提琴。在这里你可以看到我的标记就像ul里面的一堆李。在这篇文章中,我把3个lis作为一行,下一个3个lis作为另一行,以此类推。现在我已经使用jQuery来获取一个li的高度,这个高度比其他两个li高,并将这两个li转换为最高li的相同高度。这里,我的jQuery对于第一行运行良好,但对于其他行不起作用。那么,有人能告诉我如何使其他行执行相同的高度吗?任何帮助和建议都是非常值得赞赏的。 我的jQuery代码如下jQuery将另外两个li的高度设置为与最高的相同的高度,jquery,jquery-selectors,Jquery,Jquery Selectors,我有这把小提琴。在这里你可以看到我的标记就像ul里面的一堆李。在这篇文章中,我把3个lis作为一行,下一个3个lis作为另一行,以此类推。现在我已经使用jQuery来获取一个li的高度,这个高度比其他两个li高,并将这两个li转换为最高li的相同高度。这里,我的jQuery对于第一行运行良好,但对于其他行不起作用。那么,有人能告诉我如何使其他行执行相同的高度吗?任何帮助和建议都是非常值得赞赏的。 我的jQuery代码如下 <script type="text/javascript">
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(function() {
var items = $("ul.products li");
var rows = items.length / 3;
if (rows <= 0)
rows = 1;
for(var r=0;r<rows;r++) {
normalizeRowHeight(r, items);
}
});
function normalizeRowHeight(row, itemSet) {
var maxRowHeight = 0;
itemSet.slice(0,3).each(function(i) {
if ($(this).height() > maxRowHeight )
maxRowHeight = $(this).height();
});
itemSet.slice(0,3).each(function(i) {
$(this).css('height', maxRowHeight + "px");
});
}
});
</script>
$(document).ready(function()
{
var i=0,j=0;
$('li').each(function(){
j=$(this).height();
if (i<j)
i=j;
});
$('li').each(function(){
$(this).height(i);//set Max height of li to other li
alert($(this).height());
});
});
jQuery(文档).ready(函数(){
jQuery(函数(){
风险值项目=$(“ul.li”);
变量行=items.length/3;
如果(rows逻辑中有一个漏洞,您可以选择要操作的切片。您总是处理前3项
试试这个:
function normalizeRowHeight(row, itemSet) {
var maxRowHeight = 0;
itemSet.slice(row * 3,(row + 1)*3).each(function(i) {
if ($(this).height() > maxRowHeight )
maxRowHeight = $(this).height();
});
itemSet.slice(row * 3,(row + 1)*3).each(function(i) {
$(this).css('height', maxRowHeight + "px");
});
}
你可以这样做
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(function() {
var items = $("ul.products li");
var rows = items.length / 3;
if (rows <= 0)
rows = 1;
for(var r=0;r<rows;r++) {
normalizeRowHeight(r, items);
}
});
function normalizeRowHeight(row, itemSet) {
var maxRowHeight = 0;
itemSet.slice(0,3).each(function(i) {
if ($(this).height() > maxRowHeight )
maxRowHeight = $(this).height();
});
itemSet.slice(0,3).each(function(i) {
$(this).css('height', maxRowHeight + "px");
});
}
});
</script>
$(document).ready(function()
{
var i=0,j=0;
$('li').each(function(){
j=$(this).height();
if (i<j)
i=j;
});
$('li').each(function(){
$(this).height(i);//set Max height of li to other li
alert($(this).height());
});
});
$(文档).ready(函数()
{
var i=0,j=0;
$('li')。每个(函数(){
j=$(this).height();
如果(i您需要更新.slice()
中每一行的数字,那么,.slice(0,3)
将变为.slice(3,6)
,然后.slice(6,9)
等等。类似以下的操作可以实现这一点:
(function($) {
function normalizeHeight(items) {
var maxHeight = 0, itemHeight;
items.each(function() {
itemHeight = $(this).height();
if (itemHeight > maxHeight) {
maxHeight = itemHeight;
}
}).height(maxHeight + 'px');
}
$(document).ready(function(){
var itemsPerRow = 3,
items = $('ul.products li'),
rows = items.length / itemsPerRow,
r, min, max;
if (rows < 1) rows = 1;
for(r = 0; r < rows; r++) {
min = itemsPerRow * r,
max = min + itemsPerRow;
normalizeHeight(items.slice(min, max));
}
});
}(jQuery));
(函数($){
功能规格化重量(项目){
var maxHeight=0,itemHeight;
项。每个(函数(){
itemHeight=$(this.height();
如果(itemHeight>maxHeight){
最大高度=项目高度;
}
}).高度(最大高度+px');
}
$(文档).ready(函数(){
var itemsPerRow=3,
项目=$('ul.products li'),
行=items.length/itemsPerRow,
r、 最小值,最大值;
如果(行数<1)行数=1;
对于(r=0;r
我放了一个。为什么你不能用css来做这个呢???@谢谢Rob White,谢谢你完美的回答。但是你能描述一下你在这行中所做的改变吗。我很好奇你在这里。谢谢。你的技巧很好,但你能解释一下你的代码吗。很抱歉问你,因为我是jQuery的新手。Cu想知道魔法是如何发生的吗?这实际上与您所做的相同,只是您使用了硬编码的.slice(0,3),这意味着它将只对前三个应用normalizeRow…为了将其应用于每一行,您需要遍历这些行,以便更新该.slice()每一次。这有意义吗?我不太擅长解释抱歉哈。