0

次のJSでアコーディオンメニューを作りました

$(function(){
 $('#accordion .fullChild>a.opener').text('+').addClass('box');

  $('#accordion .opener').click(function() {
  if($(this).text() == "-") {

  $(this).text("+");
  }
  else {

  $(this).text("-");
  }
});
});


            function initMenus() {
    $('ul#accordion ul').hide();

    $('ul#accordion li a.opener').click(
        function() {
            var checkElement = $(this).next();
            var parent = this.parentNode.parentNode.id;
                if($('#' + parent).hasClass('noaccordion')) {
                    $(this).next().slideToggle('normal');

                    return false;
                }
                if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
                    if($('#' + parent).hasClass('collapsible')) {
                        $('#' + parent + ' ul:visible').slideUp('normal');

                    }
                    return false;
                }
            if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
                $('#' + parent + ' ul:visible').slideUp('normal');
                checkElement.slideDown('normal');

                return false;
            }
        }
    );
}
$(document).ready(function() {initMenus();});

それはすべて私が望むように機能しますが、1つだけです。1つのプラスを切り替えるとマイナスに変わりますが、もう一度切り替えない限りマイナスのままになります

ここにフィドルがありますhttp://jsfiddle.net/ZpXrW/1/

htmlとcssはむき出しです。スクリプトを間違って実行した方法と、それを改善する方法を学びたいと思います。これを実現するためのもっと簡潔な方法があると思います。

4

1 に答える 1

1

プラス記号に戻すには、...元に戻す必要があります。それ自体では発生しません。問題を修正するためにアコーディオンロジックを使用してフィドルを更新しましたhttp://jsfiddle.net/ZpXrW/2/

于 2012-04-27T00:25:12.797 に答える