0

トグルを使用し、+ 文字 (.plusminus クラスの要素) をクリックするとトリガーされるドロップダウン メニューがあります。トグルが発生すると、+ 記号も「display: none」に切り替えられ、代わりに - (マイナス) 記号が表示されるように切り替えられます。

問題は、マイナス記号をクリックしてもドロップダウン メニューが再びトグルされないことです。+ 記号が表示されている場合にのみ機能します。

私が間違ったことを誰かが知っていますか?

ありがとう

$('#menu li:has(ul)').each(function() {   
    $(this).append( "<span class='submenuplus plusminus'> &#43; </span>" );
    $(this).append( "<span class='submenuminus plusminus'> &#45; </span>" );   
});

$('#menu').on('click','.plusminus',function() {
    $(this).prev("ul").slideToggle("slow"),
    $('.submenuminus, .submenuplus').toggle();
});
4

1 に答える 1

1

クリックイベントをクリーンアップしました。次のようなものを試してください

$('#menu li:has(ul)').each(function() {   
    $(this).append( "<span class='submenuplus plusminus'> &#43; </span>" );
    $(this).append("<span class='submenuminus plusminus'> &#45; </span>");
    $(this).find('.submenuminus').hide();    
});

$('#menu .plusminus').click(function(){
    $(this).prevAll("ul").slideToggle("slow"),
    $(this).parent().find('.plusminus').toggle();
});​

あなたをつまずかせている1つの問題は、の使用です

$(this).prev("ul")

これは、セレクターに一致する直接の兄弟のみを見つけるため、サインではなく<ul>、サインに対してネストされたを返します。は記号の直接の兄弟ではありません (記号のある2つあります)。そのため、代わりに を使用する必要があります。+-.prev([selector])<ul>-<span> <span>+.prevAll([selector])

于 2012-12-17T06:27:26.357 に答える