当外部div和内部div具有相同类时,要删除内部div的类

时间:2015-12-03 10:28:41

标签: javascript jquery

<div class="test">
  <div class="test">
    <div class="test">
       Test Content
    </div>
  </div>
</div>

我想删除内部div的类测试。我可以使用下面的代码,但寻找更多的n级通用方法。请指导我正确的方法来实现这一目标。

<script>
  $(document).ready(function(){
    // this will delete class test of level 1
    $($(".test")[1]).removeClass('test');
    //or
    // this will delete class test of level 2
    $($(".test")[2]).removeClass('test');
  });
</script>

Fiddle

Updated Fiddle仍无效。

由于

1 个答案:

答案 0 :(得分:2)

这应该有效:

$(function() {
  $("div.test > div.test").removeClass("test");
});

它获得divtest,它是另一个divtest的直接后代,并删除了它的类。

你也可以把它变成一个功能:

function removeDuplicateClass(cls) {
    return $("div." + cls + " > div." + cls).removeClass(cls).length;
}

编辑:看到编辑后,这应该有效

function removeDuplicateClass(cls, level) {
  // get all top level divs with that class
  var parent = $("div." + cls).filter(function () {
    return !$(this).parent().is("div." + cls);
  });

  // build selector
  var selector = [];
  for (var i = 0; i < level; ++i) {
    selector.push("> div." + cls);
  }

  // now remove class
  return $(selector.join(" "), parent).removeClass(cls).length;
}