【问题标题】:Remove a parent class from a child element before calling method on parent (javascript/jquery)在调用父级方法之前从子元素中删除父类(javascript/jquery)
【发布时间】:2013-05-08 19:19:09
【问题描述】:

假设我有以下无序列表

<ul class="foo">
  <li>
    <div class="bar">
    </div>
    <div class="baz">
    </div> 
 </li>
 <li>
   <div class="bar">
   </div>
   <div class="baz">
   </div> 
 </li>
</ul>
<div class="nav">
    <a class="prev-link">Previous</a>
    <a class="next-link">Next</a>
</div>

我将列表传递给像 $(".foo").carouFredSel(//options) 这样的轮播,但我不希望 bar 类受到轮播的影响。

我在调用轮播之前尝试过$('.bar').removeClass('foo'),但它似乎不起作用......它仍然是轮播的一部分。我怎样才能防止一个 div 继承父类,或者有什么不同的方法可以防止该 div 被视为轮播的一部分,即(就地保留)?

【问题讨论】:

  • 问题似乎是 .foo 包含您的所有 div,包括 .bar 和 .baz。如果您只想使用 .baz,您的轮播功能将需要更改为排除 .bar div 或仅使用 .baz 元素。

标签: javascript jquery html dom


【解决方案1】:

您可以尝试对您不想覆盖的 .bar 类属性使用 !important CSS 规则。但这可能不是该规则的最佳用途。

你也可以尝试 :not() 与 Foo 类选择器。

【讨论】:

  • 我不想改变 bar 的属性...我不想在我们选择 '.foo' 时选择 bar ...你能说更多关于 :not() 的信息吗?
  • 当然,没有太多内容。基本上你可以选择一个没有/或没有属性的元素。 .foo &gt; div:not(.bar) {} 应该选择类 foo 中所有不属于 bar 类的 div 元素。
【解决方案2】:

这将从你的整个 ul 中删除类 foo,如果这就是你想要的。

$('.bar').parents('.foo').removeClass('foo');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2015-07-28
    • 2021-05-09
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多