【发布时间】:2016-10-15 04:34:21
【问题描述】:
我正在尝试创建一个列高均衡器,如果它是页面上的唯一实例,但如果有多个实例,则脚本似乎忽略了 each(){function 中的 $(this)。
这是 HTML:
<div class="equalizer" data-cols="2">
<div class="equalized ">Content</div>
<div class="equalized ">Content</div>
<div class="equalized ">Content</div>
<div class="equalized ">Content</div>
</div>
还有 jQuery:
$(".equalizer").each(function() {
var colClass = 'eq-col-'+$(this).data("cols");
var height = parseInt($(this).css('height'));
$(this).children().each(function() {
$(this).css('height',height + 'px');
$(this).addClass(colClass);
});
});
这是似乎被多个实例忽略的行:
var height = parseInt($(this).css('height'));它的目的是获取该实例的包装器.equalizer 的高度,然后将其设置为每个子equalized 的高度。
脚本似乎正在从页面上最高的 equalizer 包装器获取高度,并将页面上所有 equalized 子级的高度设置为等于该高度,无论它位于哪个包装器中......我'已经搞砸了几个小时,我很茫然......任何帮助将不胜感激。
【问题讨论】:
-
所以您循环到
.equalizer以获取.equalized的高度,然后将其应用于.equalized的孩子? -
我正在调用
equalizer的每个实例,然后获取该实例的高度,然后将其高度应用于它的每个子equalized -
如果
$(this)有值并且不返回 null 或任何内容,则尝试执行 console.log()。 -
看起来均衡的高度乘以孩子的数量。 $(equalizer).height 是包括所有孩子的高度的高度。在下一步中,您将为所有孩子设置该高度。这是你想要做的吗?
-
我尝试使用两个类为
equalizer的包装器,但在我的情况下,子equalized的高度与其父equalizer相同。所以,根据你的代码,它工作得很好。你能再解释一下吗??