【问题标题】:How to add and remove class?如何添加和删除类?
【发布时间】:2014-06-12 23:15:16
【问题描述】:

我知道有多个类似的问题,但我无法从中弄清楚。

我有一个列表,其中包含三个项目和三个相关锚点,位于页面的不同部分,指向这些项目。

单击锚点时,我希望相关列表项的锚点获得“cur”类(用于当前),如下图所示。同时从其他两个列表项中删除“cur”类。

这里是锚点:

<a href="#text-3" id="openSidebar"></a>
<a href="#text-5" id="about"></a>
<a href="#twitter-5" id="socialMedia"></a>

这里是列表:

<ul class="thumbNav">
<li class="first"><a href="#" class="panel1 cur">1</a></li>    
<li   class=""><a href="#" class="panel2">2</a></li>    
<li class="last"><a href="#" class="panel3">3</a></li></ul>
</ul>

所以它们都各自相关。

【问题讨论】:

  • ""所以它们各自都有相关性。"" 我看了两遍,现在你能再告诉我一次吗……这之间的逻辑让你说它们是否相关?我看到的唯一一个是.index()
  • 当您单击上述锚点之一时,它会分别从上到下影响下方列表锚点之一。
  • 锚点和列表之间有什么额外的关系吗?
  • 好的,但是你已经说过:""如下图所示"" 但下面只是没有说明。上面的 &lt;a&gt; 元素的父级是什么?它有一些ID...?任何事物?您能否解释一下您在发布的代码中看到的任何逻辑以查看它们是否相关? (再次......不要输入 cmets,而是编辑您的问题!):)
  • 我将首先纠正您使用类名的事实,就好像它们是 ids。为锚点提供相同的类名,这将有助于 jQuery。你可以给 li 赋予相同的类名,尽管不是必需的(因为 ul 有一个类名)。

标签: jquery class add


【解决方案1】:

在您的列表项中添加一个对应的类

HTML

<div id="giveItAName">
<a href="#text-3" id="openSidebar"></a>
<a href="#text-5" id="about"></a>
<a href="#twitter-5" id="socialMedia"></a>
</div>

<ul class="thumbNav">
<li class="first openSidebar"><a href="#" class="panel1 cur">1</a></li>    
<li   class="about"><a href="#" class="panel2">2</a></li>    
<li class="last socialMedia"><a href="#" class="panel3">3</a></li></ul>
</ul>

Javascript

$("#giveItAName a").click(function(){
      $("#thumNav a").removeClass("cur");

      var item = $(this).attr("id");
      $("#thumbNav ." + item + " a" ).addClass("cur");
})

更新

由于锚点分散在页面上,将它们称为一个通用类并将其用作选择器:

<a href="#text-3" class="opener" id="openSidebar">Side Bar</a>
<a href="#text-5" class="opener" id="about">About</a>
<a href="#twitter-5" class="opener" id="socialMedia">Social</a>

<ul class="thumbNav">
    <li class="first openSidebar"><a href="#" class="panel1 cur">1</a></li>
    <li class="about"><a href="#" class="panel2">2</a></li>
    <li class="last socialMedia"><a href="#" class="panel3">3</a></li>
</ul>

Javascript:

$("a.opener").click(function () {
    $(".thumbNav a").removeClass("cur");
    var item = $(this).attr("id");
    $(".thumbNav ." + item + " a").addClass("cur");
})

Demo

【讨论】:

  • 这是我遇到的与我的问题类似的问题。我不能将它们放在 div 中,因为它们锚定在页面的不同部分。
  • 你应该在你的问题中提到这一点
  • 我会添加的。感谢您的回复。
  • 但是代码呢,一旦我给他们一个通用的类,它会如何改变?
  • 它看起来不错,但它不起作用。它成功地删除了该类,但没有添加它。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多