1

如果孩子身高发生变化,我正在尝试动态更改多个父母的高度。

每个父母只有一个具有 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>

查询

$(".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

4

2 回答 2

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 的元素都没有高度。不知道 resize 和 delegate 函数是做什么的,但我认为它们是你正在使用的函数。

要将父“.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());
        });
});​
于 2012-07-05T19:10:55.940 回答
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
}
于 2012-07-05T19:07:16.917 回答