【问题标题】:Bootstrap Toggle text change on multiple elementsBootstrap 切换多个元素上的文本更改
【发布时间】:2013-12-21 05:39:42
【问题描述】:

您好,我在使用引导切换时遇到以下问题。

代码如下

(我复制了错误的 HTML 代码部分,所以我编辑了问题,这是应用到切换的实际代码)

                <div class="panel-group" id="accordion">
              <div class="panel panel-default">
                <div class="panel-heading">
                  <h4 class="panel-title active">
                    <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Electronics <span class="more">+</span></a>
                  </h4>
                </div>
                <div id="collapseOne" class="panel-collapse collapse">
                  <div class="panel-body">
                    <ul>
                        <li><a href="#">Item 1</a> (2)</li>
                        <li><a href="#">Item 2</a> (1)</li>
                        <li><a href="#">Item 3</a> (3)</li>
                    </ul>                   
                  </div>
                </div>
              </div><!--  panel 1-->
              <div class="panel panel-default">
                <div class="panel-heading">
                  <h4 class="panel-title">
                    <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Cartridges <span class="more">+</span></a>
                  </h4>
                </div>
                <div id="collapseTwo" class="panel-collapse collapse">
                  <div class="panel-body">
                    <ul>
                        <li><a href="#">Item 1</a> (2)</li>
                        <li><a href="#">Item 2</a> (1)</li>
                        <li><a href="#">Item 3</a> (3)</li>
                    </ul>                   
                  </div>
                </div>
              </div><!--  panel 2-->
                      </div><!-- panel group -->    

这就是我用来替换文本的内容

    $('.more').click(function(){ 
    $(this).text(function(i,old){
        return old=='+' ?  '-' : '+';
    });
});

所以我想在单击元素时将 div class=more 的文本更改为减号(-)

在这个帖子上我找到了答案Twitter bootstrap collapse: change display of toggle button

但是,由于我有多个项目,当我单击其中一个项目时,符号会变为 (-) 并且可以正常工作,但如果我单击另一个“项目”,第一个项目会折叠,但符号仍然存在 (-)更改为 (+)

我该怎么做?我知道这是一个简单的问题,也许是一个简单的答案,但我有点卡在这里。

感谢您的帮助

【问题讨论】:

    标签: javascript jquery html css twitter-bootstrap


    【解决方案1】:

    除了更新当前的more 元素外,您还需要将所有其他more 元素更新为+

    var $mores = $('.more').click(function () {
        $(this).text(function (i, old) {
            return old == '+' ? '-' : '+';
        });
        //update all other more text to -
        $mores.not(this).text('+');
    });
    

    演示:Fiddle

    【讨论】:

      【解决方案2】:

      试试:

      $('.more').click(function(){
          var txt = $(this).text();
          if(txt == "+"){        
              $('.more').text("+");
              $(this).text("-");
          }
          else{
              $(this).text("+");
          }
      });
      

      DEMO here.

      【讨论】:

        【解决方案3】:

        在我看来,您应该加入原生 Bootstrap 事件:

        $('.dropdown').on({
            'show.bs.dropdown': function () {
                var l = $('.more', this).html('-')
                $('.more').not(l).html('+')
            },
            'hidden.bs.dropdown': function () {
                $('.more', this).html('+')
            }
        });
        

        FIDDLE

        【讨论】:

        • 我看到小提琴在工作,但在我的代码中没有做任何事情。我使用的是 boostrap 2.0(不是我,我的前端设计师)与这个问题有什么关系吗?
        • 我知道现在发生了什么,该文档还有其他带有 .dropwdown 类的切换元素,因此它被应用于它找到的第一个元素,但是是否可以为每个具有下拉类的块执行此操作并将其仅应用于当前正在使用的元素?
        • @DannyG - 这主要用于 Bootstrap 3 及更高版本,据我所知不适用于 2.0。
        • 它工作正常,但我复制的代码有误,这里修复了,你能看一下吗?所以我可以接受你的回答。谢谢
        • @DannyG - 从 HTML,我猜这样的东西应该可以工作 -> jsfiddle.net/25NXZ/5
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        • 2021-01-13
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多