如果child有CSS并且使用jQuery获取子索引,则调整父级的大小

时间:2012-07-05 18:30:39

标签: jquery css

如果子高度发生变化,我试图动态更改多个父项的高度。

每个父母只有一个孩子使用z-index样式..

这是我根据我发现的内容尝试做的事情

HTML

<div class="parent">
    <div class="child"></div>
    <div class="child2"></div>
    <div class="child3"></div>
</div>
<br>

<div class="parent">
    <div class="child" style="z-index:1;"></div>
    <div class="child2"></div>

</div>
<br>

<div class="parent">
    <div class="child" ></div>
    <div class="child2" style="z-index:1;"></div>

</div>

JQUERY

$(".parent").each(function() {

  var divIndex = ;
  var divHeight = ;  

  if ($('this').children().css('z-index') == '1')
{
   // Get height and index of the single specific element with z-index css 
}

$('this').resize();
    $('this').delegate();


});

JSFiddle

2 个答案:

答案 0 :(得分:1)

您的代码充斥着javascript错误,更具体地说是使用$('this'),取出单引号:$(this);

由于使用了id而不是类,因此大多数CSS都不会样式化。

这是一个更新的jsfiddle,它可以纠正错误并让你在正确的轨道上迭代父母子div:

http://jsfiddle.net/EgbLk/4/

$('.parent').children().each(
    function(){

      var divIndex = null ;
      var divHeight = null ;          

      if($(this).css('z-index') === '1') {
         alert('z-index is 1'); 
      }

      $(this).parent().resize();
      $(this).parent().delegate();      
    }
);

这是一些“纠正”的CSS:

.parent {
    width: 100px;
    padding: 10px;
    background:#ff0000;
}

.child2 {
    position: absolute;
    width: auto;
    left: 0px;
    right: 0px;
    height:20px
}

.child {
    position: absolute;
    width: auto;
    left: 0px;
    right: 0px;
    height:50px
        z-index:1;
}

.child3 {
    position: absolute;
    width: auto;
    left: 0px;
    right: 0px;
    height:100px
}

答案 1 :(得分:1)

我会这样做:

$('.parent').children().filter(function() {
        return this.style.zIndex==='1';
    }).each(function(index, elem) {
        var divIndex=$(elem).index(),
            divHeight=$(elem).css('height');
        $(elem).resize();
        $(elem).delegate();
});​

在你的小提琴中,z-index = 1的元素都没有高度。 不知道调整大小和委托函数的作用,但我认为它们是你正在使用的函数。

要在调整大小时动态地将父“.parent”元素调整为与z-index = 1的元素相同的高度,您可以这样做:

$('.parent').children().filter(function() {
        return this.style.zIndex==='1';
    }).each(function(index, elem) {
        var divIndex=$(elem).index(),
            divHeight=$(elem).css('height');
        $(elem).on('resize', function() {
            $(this).closest('.parent').css('height', $(this).height());
        });
});​