【问题标题】:jquery add remove classjquery添加删除类
【发布时间】:2010-02-11 16:34:37
【问题描述】:

我有 4 个锚点,我想在单击锚点时将当前类添加到锚点,并同时从其他 3 个中删除该类。这是我的代码。我做错了什么?

if ($("ul#thumb a").hasClass("current") {
    $("ul#thumb a").removeClass("current");
    $(this).addClass("current");
});

我的 html 看起来像这样:

<ul id="thumbs">
    <li>
        <!-- intro page navi button -->
        <a id="t0" class="active" name="t0">The Company</a>

        <ul class="navi">
            <li><a style="display:none"></a></li>
            <li><a id="t1" name="t1">The Brief</a></li>
            <li><a id="t2" name="t2">The Solution</a></li>
            <li><a id="t3" name="t3">The Result</a></li>
        </ul>

    </li>
</ul>

【问题讨论】:

  • 你的 HTML 是什么样的?
  • 究竟是什么不工作?是不删除类还是不添加类?此外,这看起来不像 jQuery 的全部内容。你需要某种$('ul#thumb a').click(function() {...}); 来包装它。
  • @Topher 我已经修改了我的帖子以显示我的 html
  • 我已经更新了我的答案来代表你的 HTML。
  • @jonathan 非常感谢您的帮助。我想要实现的是在上面的 html 中名为 #t0、#t1、#t2 和 #t3 的 btns 在单击它们时应用了活动类,而不仅仅是 #t0。有什么想法可以实现吗?

标签: jquery class add


【解决方案1】:

通过使用事件委托,我们只为所有点击事件绑定一个处理程序。当一个锚点(.current 锚点除外)被点击时,我们剥离其类的 .current 锚点,并将被点击的锚点设为新的当前锚点:

$("#thumbs").on("click", "a:not(.current)", function ( event ) {
    $(".current", event.delegateTarget).removeClass("current");
    $(this).addClass("current");
});

【讨论】:

  • @Jonathan Sampson e.preventDefault(); 是什么意思?顺便说一下 +1
  • @c0mrade:它阻止了链接的默认操作。
【解决方案2】:

我想这会对你有所帮助

$("a").click(function() {
  $('a').removeClass('current');
  var id = $(this).attr('id');
  $('#'+id).addClass('current');
});

【讨论】:

  • 你为什么混合$jQuery?你应该选择一个并坚持下去。
  • 抱歉弄错了..你可以用一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多