0
$("ul.haschild").hide()    
$("#menu2 li span").click(function(){

        if ($("ul.haschild:hidden")) {
               $('ul.haschild').show('slow');
         $(this).("background",'url("images/image.jpg") no-repeat scroll right 10px #004DC1');
            }
            else if ($("ul.haschild:visible")) {
             $("ul.haschild").hide('slow');
         $(this).("background",'url("images/image2.jpg") no-repeat scroll right 10px #004DC1');
            }

       });

私のコードの何が問題なのですか?非表示機能が機能せず、背景が変更されませんか?

html コード:

<ul id="menu2">
<li class="parent"><a href="/taxonomy/term/6">one</a><span></span><ul class="haschild">
<li><a href="/taxonomy/term/14">two</a></li>
<li><a href="/taxonomy/term/13">three</a></li>
</ul>
</li>
<li><a href="/taxonomy/term/7">four</a></li>
<li><a href="/taxonomy/term/8">five</a></li>
</ul>
4

2 に答える 2

2

欠けている/間違っているものがいくつかあります:

  • まず第一に、子を持つメニュー項目に「親」クラスがある場合、メニュー内のすべての li を探す必要があるのはなぜですか。

    $('#menu2 li.parent span').click( function()

  • クリックされたメニュー項目の子のみを探したいとします。

    $(this).parent().find('ul.haschild')

  • 最後になりましたが、CSS /インラインスタイルを次のように設定する必要があります.css('attribute', 'value')

    $('#menu2 li.parent span').click( function()
    {
        if( $(this).parent().find('ul.hasChildren:hidden').length > 0 )
        {
            $(this).parent().find('ul.haschild').show(500);
            $(this).css('background', 'background: ....;");
        }
        else
        {
            $(this).parent().find('ul.haschild').hide(500);
            $(this).css('background', 'background: ......;')
        }
    });

于 2012-12-04T10:03:47.240 に答える
0

if-句が正しくありません。以下を変更します。

if ($("ul.haschild:hidden")) {

に:

if ($("ul.haschild:hidden").length > 0) {

また、あなたの2番目ifは無関係です。要素が非表示でない場合は、定義により表示する必要があります。だから、あなたはそれを残すことができます。

于 2012-12-04T09:47:16.510 に答える