【问题标题】:Remove class from all <a>-tags within a certain div using jQuery使用 jQuery 从某个 div 中的所有 <a>-tags 中删除类
【发布时间】:2012-06-08 13:03:08
【问题描述】:

我正在使用 jQuery 并设法将一个简单的手风琴粘贴在一起,它只能同时打开手风琴的一个部分。具有子项的手风琴的每个部分都有一个“+”号来表示这一点。单击该部分并展开内容时,“+”图标切换为“-”。 在我需要在同一页面上放置 2 个(或更多)手风琴之前,这一切都很好用。它现在的工作方式,脚本将所有扩展的 div “-”-icons 从“-”切换到“+”。我只希望与最近点击的链接相同的 div 中的 +/- 图标进行切换,就像现在一样,点击链接时扩展部分的所有图标都会更改。

这里是使用的脚本:

$(document).ready(function() {

    $(".accordion dd").hide();

    $(".accordion dt a").click(function(){
        $(this).parent().next().siblings("dd:visible").slideUp("slow");
        $(this).parent().next().slideToggle("slow");
        if ($(this).is("expanded")) {
            $(this).toggleClass("expanded");
            } else {
            $(".accordion dt a").removeClass("expanded");
            $(this).addClass("expanded");
        }
        return false;
    });
});

这是一些 html。下面的 html 就是一个例子。如果页面上有多个列表,则会重复下面的html结构。

<div style="position:relative;" class="regularBorder roundedCorner">
<h2>header</h2>
<dl class="accordion">
    <dt class="roundedCorner navbarBG first noSideBorder">
        <a href="/">Lorem Ipsum 1</a></dt>
    <dd>
        <ul class="accordion noSideBorder">
            <li><a href="#">Lorem ipsum dolor</a></li>
            <li><a href="#">Lorem ipsum dolor</a></li>
        </ul>
    </dd>
    <dt class="roundedCorner navbarBG noSideBorder">
        <a href="/">Lorem Ipsum 2</a></dt>
    <dd>
        <ul class="accordion noSideBorder">
            <li><a href="#">Lorem ipsum dolor</a></li>
            <li><a href="#">Lorem ipsum dolor</a></li>
        </ul>
    </dd>
    <dt class="roundedCorner navbarBG noSideBorder">
        <a href="/">Lorem Ipsum 3</a></dt>
    <dd>
        <ul class="accordion noSideBorder">
            <li><a href="#">Lorem ipsum dolor</a></li>
            <li><a href="#">Lorem ipsum dolor</a></li>
        </ul>
    </dd>
</dl>
</div>

因此,我们将不胜感激有一个简单的解决方案来完成这项工作!

【问题讨论】:

  • 您不能使用唯一 ID 并将它们作为参数提供给您的脚本吗?

标签: jquery accordion classname


【解决方案1】:
var selector = '.accordion dt a';
$(selector ).each(function()
{
        $(this).removeClass("expanded");
});

【讨论】:

    【解决方案2】:

    不应该这样吗:

    $(".accordion dt a").removeClass("expanded");
    

    是这样的:

    $(this).parents('.accordion').find('dt a').removeClass("expanded");
    

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2015-06-27
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2016-05-21
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多