首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开或关闭accordion时切换jQuery accordion的标题

打开或关闭accordion时切换jQuery accordion的标题
EN

Stack Overflow用户
提问于 2012-10-22 20:08:42
回答 2查看 1K关注 0票数 2

我已经完成了95% (我希望如此)。我正在开发一个手风琴功能,它可以根据手风琴是打开还是关闭来改变手风琴头部的文本。(我有一个正负图像在工作)。

目前,如果客户端单击accordion以打开和关闭它,标题将正确更改,但如果客户端打开另一个accordion,则原始accordion将向上滑动,但标题不会更新。我已经尝试了几个我认为会起作用的选项,但到目前为止还没有成功。

我做了一个jsfiddle here

jquery是:

代码语言:javascript
复制
 $(document).ready(function() {
// accordion functionality 
$('.accordion-head').click(function(e){
    var content = $(this).parent().find('.accordion-content');
    var head = $(this).parent().find('.accordion-head');
    var $showMore = "Show me more";
    var $hideContent = "Hide this offer";            

    content.addClass('actual');

    $('.accordion-content').not('.actual').each(function(){
        if ($(this).hasClass('accordion-opened')){
            $(this).slideUp(200,function(){
                $(this).toggleClass('accordion-opened');
                $(this).parent().find('.accordion-head').toggleClass('accordion-open');
            });
        }
    });

    $(this).toggleClass('accordion-open');
    content.removeClass('actual');               

    if($(this).hasClass('accordion-open')){
        content.slideDown(200,function(){
            content.toggleClass('accordion-opened');
            head.html($hideContent);
        });
    }else{
        content.slideUp(200,function(){
            content.toggleClass('accordion-opened');
            head.html($showMore);
        });
    }
    e.preventDefault();
   });

 });​

HTML看起来像这样:

代码语言:javascript
复制
  <div class="accordion">
         <div class="accordion-head">
                        <a href="#">
                           <span class="accordion-heading">Show me more</span>
                        </a>
                    </div>
                    <div class="accordion-content">
                        Including Thames Water, Severn Trent, Anglian Water, Yorkshire Water and many more, plus all council tax local authorities. Cashback on mortgage payments up to maximum monthly mortgage payment of £1,000.
                    </div>
                </div>


                <span class="spacer"></span>

                <div class="accordion">
                    <div class="accordion-head">
                        <a href="#">
                            <span class="accordion-heading">Show me more</span>
                        </a>
                    </div>
                    <div class="accordion-content">
                        Including British Gas, SSE, EDF Energy, E.ON, npower and many more.
                    </div>
                </div>
                <span class="spacer"></span>
            etc.

希望有人能帮上忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 20:19:53

您可以在折叠循环期间通过删除head.html($showMore)和更改来重写标头

代码语言:javascript
复制
$(this).parent().find('.accordion-head').toggleClass('accordion-open');

代码语言:javascript
复制
$(this).parent().find('.accordion-head').toggleClass('accordion-open').html($showMore);
票数 2
EN

Stack Overflow用户

发布于 2012-10-22 20:26:43

代码语言:javascript
复制
 var $showMore = "Show me more";
代码语言:javascript
复制
 var $hideContent = "Hide this offer";

$('.accordion-head').html($showMore);

代码语言:javascript
复制
 content.addClass('actual');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13011156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档