jquery - 更改包含特定子类

时间:2015-06-29 18:32:17

标签: javascript jquery css

如果.pst包含子类.pa,我想要增加'.pst'的高度,下面的代码不起作用,如果我使用this而不是.pst {1}}关键字所有带window.onload = function() { if($('.pst').contents().find('.pa').length !=0){ $(this).css('height','+=200px'); } } <div class="pst"> <div class="pa"></div> <div class="pa"></div> <div class="pa"></div> <div class="pa"></div> </div> <div class="pst"> <div class="pb"></div> <div class="pb"></div> <div class="pb"></div> <div class="pb"></div> </div> 的div元素都会发生变化。救命!

dojo/request/xhr

3 个答案:

答案 0 :(得分:1)

您可以使用:has选择器简化它:

window.onload = function() {
    $('.pst:has(.pa)').css('height', '+=200px');
}

以上将仅选择并增加.pst.pa后代的{{1}}的高度。

答案 1 :(得分:1)

无需检查内容,只需使用$('.pst .pa')定位所需的课程组合。然后,您可以使用each()循环项目。

这是一个可运行的片段:

$(function() {
  $('.pst .pa').each(function() {
    $(this).css('height','+=200px');
 });
});
.pa {background-color: blue; margin: 5px; height:50px; width:50px; float:left}
.pb {background-color: blue; margin: 5px; height:50px; width:50px; float:left}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="pst">
 <div class="pa"></div>
 <div class="pa"></div>  
 <div class="pa"></div>  
 <div class="pa"></div>    
</div> 

<div class="pst">
 <div class="pb"></div>
 <div class="pb"></div>  
 <div class="pb"></div>  
 <div class="pb"></div>    
</div>

答案 2 :(得分:0)

  

如果它包含子类,我希望 .pst的高度增加 .pa

您在if条件中使用$(this),该条件引用全局窗口对象而不是当前.pst元素。

考虑使用each

$('.pst').each(function(){
  if($(this).find('.pa').length){
    $(this).css('height','+=200px');
  }
});