在渲染div时获取div的父类

时间:2013-08-19 18:41:44

标签: javascript jquery html

我有:

<div class="foo">
 <div class="bar">
 </div></div>

当呈现“bar”时,我想检查“bar”是否在“foo”中,如果是,那么类名是什么。

什么不起作用:

<div class="foo">
 <div class="bar">
  <script type="text/javascript">
    $(this).load(function(){
      var parentClass= $(this).parent().attr('class');

    });
  </script>
 </div></div>

如果“bar”在“foo”中,我想隐藏“bar”,如果没有,则显示它,所以我会:

if(parentClass.indexOf('foo') > -1) $(this).hide();

6 个答案:

答案 0 :(得分:0)

尝试:

$('.foo').each(function () {
    if ($(this).find('div.bar').length) $(this).find('div.bar').hide();
});

<强> jsFiddle example


甚至可以在没有JavaScript的情况下完成(仅限CSS):

.foo .bar {
    display:none;
}

<强> jsFiddle example

答案 1 :(得分:0)

<script type="text/javascript">
   $(this).load(function(){
      if($(this).parent().is('.foo'))
      {
        $(this).hide()
      }
   });
</script>

顺便说一句,加载将适用于我相信的图像

答案 2 :(得分:0)

div没有加载事件,无论如何,在这种情况下,this是(我认为)窗口。尝试选择DOM就绪处理程序中的所有.bar元素,然后执行您需要的任何操作。

$(document).ready(function() {
    $('.foo > .bar').hide();
});

http://jsfiddle.net/mSAMw/

答案 3 :(得分:0)

我认为你将document.ready与load函数混淆了。此外,这里有一个简单的方法,只有当它们在foo中时才能隐藏'bar'。

$(document).ready(function () {

    if ($('.foo').find('.bar').length > 0) {
        $('.bar').hide();
    }

});

答案 4 :(得分:0)

  

如果“bar”在“foo”中,我想隐藏“bar”:

只针对.foo的任何子.bar?

$('.foo .bar').hide();

答案 5 :(得分:0)

尝试

if ($('.bar').parent().hasClass('foo')){     
$('.bar').hide();
}

Demo