CSS从同一个类的多个目标中定位正确的div

时间:2016-01-24 12:15:40

标签: jquery html css

我正在尝试将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}}

谢谢!

2 个答案:

答案 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);
});