鍍金池/ 問答/HTML5  HTML/ 請教下如何用JS實(shí)現(xiàn)這種多層級的DIV顯示與隱藏?

請教下如何用JS實(shí)現(xiàn)這種多層級的DIV顯示與隱藏?

clipboard.png
點(diǎn)擊第一級顯示二,三級,然后點(diǎn)擊二級,或者三級又會顯示相應(yīng)里面的子內(nèi)容.
這種的要怎么寫JS

回答
編輯回答
使勁操

你可以嘗試一下遞歸

2018年5月30日 05:53
編輯回答
刮刮樂

可以直接使用 <detail>。不過 Firefox 不兼容,不過考慮到國內(nèi) Firefox 的占有率,其實(shí)問題也不大。

第二個(gè)方案考慮使用 :checked + <label>,可以參考我這篇文章:純CSS實(shí)現(xiàn)多選組件 和這個(gè)講堂:寫 CSS 也要開腦洞:萬能的 :checked + label。

最后,如果非要用 JS 的話,下面是一段簡單的范例,需要 jQuery:

<div class="collapse">
  <a name="level-1" class="toggle">第一級</a>  
  <div class="details">
</div>
$('.collapse").on('click', '.toggle', function (e) {
  $(e.currentTarget).parent().children().filter('.details').toggle();
});
2018年1月22日 06:41
編輯回答
凝雅

我這兒提供一個(gè)思路例子,僅是一個(gè)例子,例中給元素添加了自定義屬性data-level,雖然沒有使用上,但是是可以根據(jù)這個(gè)自定義屬性去控制顯示隱藏和確定具體層級的!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style lang="css">
        * {
            margin: 0;
            padding: 0;
        }        
        .nodisplay {
            display: none;
        }        
        h3 {
            cursor: pointer;
        }       
        ul {
            padding-left: 20px;
        }
    </style>
</head>
<body>
    <p>點(diǎn)擊下面的標(biāo)題可展開:</p>
    <ul id="nav_tree">
        <li>
            <h3 data-level="0">第一級</h3>
            <ul class="nodisplay">
                <li>
                    <h3 data-level="0-0">第二級</h3>
                    <ul class="nodisplay">
                        <li>
                            <h3 data-level="0-0-0">第三級</h3>
                            <ul class="nodisplay">
                                <li>第三級內(nèi)容1</li>
                                <li>第三級內(nèi)容2</li>
                                <li>第三級內(nèi)容3</li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>
            <h3 data-level="1">我也是第一級</h3>
            <ul class="nodisplay">
                <li>
                    <h3 data-level="1-0">我也是第二級1</h3>
                    <ul class="nodisplay">
                        <li>
                            <h3 data-level="1-0-0">我也是第三級</h3>
                            <ul class="nodisplay">
                                <li>第三級內(nèi)容1</li>
                                <li>第三級內(nèi)容2</li>
                                <li>第三級內(nèi)容3</li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>
                    <h3 data-level="1-1">我也是第二級2</h3>
                    <ul class="nodisplay">
                        <li>
                            <h3 data-level="1-1-0">我也是第三級</h3>
                            <ul class="nodisplay">
                                <li>第三級內(nèi)容1</li>
                                <li>第三級內(nèi)容2</li>
                                <li>第三級內(nèi)容3</li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
    <script>
        $(function() {
            $("#nav_tree li h3").on("click", function(e) {
                //獲取點(diǎn)擊標(biāo)題的下一個(gè)元素節(jié)點(diǎn)
                var $dom = e.target.nextElementSibling;
                $($dom).toggleClass("nodisplay");
            });
        });
    </script>
</body>
</html>

希望能給你提供一個(gè)解決問題的思路!

2017年2月7日 18:54