2011-09-02 6 views
0

私は初心者のプログラマーですから、この質問は少しシンプルかもしれません。私は、マウスクリックのアクションの後に左から右への単純な崩壊にリストをjQueryのに次のコードを使用しています: 折り畳み可能なリストを2つの方向に作成しますか?

  1. アイテム:

    $(initlist); 
    function initlist(){ 
        $('li:not(:has(ul))').css({cursor:'default','list-style-image':'none'}); 
        $('li:has(ul)') 
        .click(collapse) 
        .click() 
        .css({cursor:'pointer','list-style-image':'url(plus.gif)'}) 
        .children().hide(); 
    }; 
    function collapse(event){ 
        if (this == event.target) { 
        $(this).children().toggle(); 
        $(this).css('list-style-image', 
           ($(this).children().is(':hidden')) ? 'url(plus.gif)' :url(minus.gif)'); 
        } 
    }; 
    </script> 
    

    HTMLは次のように見て、通常の順不同のリストです1

  2. 項2
    • 項目4
    • 項目5
      • 項目6
        • 項目8
      • 項7
  3. 項3

今、私はすべてのタグを適用するか、上から下へも折りたたみ可能なリストを作成するためのHTMLコード - を変更-without方法を見つけようとしている:各項目は、デフォルトでは非表示になった後、登場しています例えば、キーボード上で下向きの矢印がクリックされた場合、1つずつ。
たとえば、項目1-5は、項目2のダウン - ダウン - >マウスクリックで表示されます。

本当に助けていただきありがとうございます。

答えて

1

(以下行われるよう)あなたがアンカータグを使用してリスト内のテキスト要素をラップすることができた場合は、この全体のことがずっと簡単になり:

$('ul').hide() 
$('li').contents() 
     .filter(function(){return this.nodeType === 3}) 
     .wrap('<a>'); 

$('a').click(function() { 
    $(this).next('ul').toggle() 
}) 
+0

は、あなたの答えのためのあなたに感謝!問題は、数多くの本当に長いリストがあり、多くのアイテムがあり、時には10以上の領域が右にネストされていることです。手動で.htmlファイルにタグを付けると、時間がかかります。しかし、私は正規表現などについてたくさん知りません、あなたは自動的に階層のすべての要素にタグを付けるスクリプトを書くことは実現可能だと思いますか? – Elip

+0

あなたのコードを実装しようとしましたが、すべての要素が同じネストレベルの左側に表示されているようですね?元のリスト構造をそのまま維持し、アイテムを順次表示させる必要があります。 – Elip

+0

あなたは余裕を残すためにあなたのCSSを調整する必要がありますUL –

関連する問題