我正在尝试将margin-top
删除到div中的段落,仅当整个div的高度大于138px
时才会删除。
问题在于我有多个具有相同类的div,其中一些高度大于138
而其他则没有。
现在当其中一个高于138px
时,我的jQuery会添加margin-top: 0
;到每个div.llamada > p
我如何只定位正确的.llamada p
而不定位其他<div class="call llamada">
<p style="margin-top: 0px;">This is the box number one with height bigger than 138px (correct style).</p>
</div>
<div class="call llamada" style="margin-top: 0px;">
<p style="margin-top: 0px;">This is the box number two with height lower than 138px (incorrect style).</p>
</div>
?我的代码:
HTML
jQuery(document).ready(function($) {
$('.llamada').each(function(){
var heightllamada = $(".llamada").outerHeight()
if (heightllamada > 138){
$(".llamada p").css('margin-top',0);
}
});
});
的jQuery
{{1}}
谢谢!
答案 0 :(得分:1)
您应该将jQuery代码更改为以下内容:
jQuery(document).ready(function($) {
$('.llamada').each(function(){
var heightllamada = $(this).outerHeight()
if (heightllamada > 138){
$(".llamada p").css('margin-top',0);
}
});
});
获得.each()
时,heightllamada
函数内部出现了错误。
在您$('.llamada').outerHeight()
之前。这将通过类llamada
遍历每个div并获得高度,然后将最后一个div高度分配给您的变量。
我将其更改为$(this).outerHeight()
。使用this
将获取当前在循环中的元素。您也可以像这样修改.each()
:
$('.llamada').each(function(index, element) {
然后使用$(element).outerHeight()
修改强>
您还需要更改此行:
$(".llamada p").css('margin-top',0);
对此:
$(this).children('p').css('margin-top',0);
出于与上述相同的原因,您需要使用this
。 .children()
用于选择子元素(在本例中为<p>
)
答案 1 :(得分:0)
您可以使用filter()
方法:
jQuery(document).ready(function($) {
$('.llamada').filter(function() {
return $(this).outerHeight() > 138;
}).find('p').css('margin-top', 0);
});