2

jQueryのドロップダウンメニューがあり、ユーザーが内側のulの外側(たとえば、またはドキュメントの残りの部分)をクリックした場合を除いて、すべてがうまく機能しますbody。内側のulは元に戻りません。何か案は?これが私のコードです:

$(document).ready(function() {
    $("#cp-nav ul li").click(function() {
        $("#cp-nav ul ul").slideUp("fast", function(){});

        $("ul", this).slideDown("fast", function(){
            $("ul", this).slideUp("fast");
        });
    });
});

だから多分次のようなことをします:

$("ul", !this).slideUp("fast", function(){});

私はjQueryとJavaScriptに少し慣れていないので、問題を探し回ろうとしましたが、言い表すのが難しいです。callbackまた、jQueryの関数があることに気づきましたが、そのslideUp使用方法がわかりません。何か助けはありますか?よろしくお願いします!:-)

編集

HTML:

<nav id="cp-nav">
    <ul>
        <li><a href="home.html">Home</a></li>
        <li>
            <a href="products.html">Products</a>
            <ul>
               <li>Design Platforms</li>
               <li>3D Animation</li>
               <li>Graphic Design</li>
               <li>Python</li>
            </ul>
        </li>
        <li>
            <a href="products.html">About</a>
            <ul>
               <li>Company History</li>
               <li>CEO &amp; Founder</li>
               <li>etc.</li>
               <li>etc.</li>
            </ul>
        </li>
        <li>
            <a href="products.html">etc.</a>
            <ul>
               <li>etc.</li>
               <li>etc.</li>
               <li>etc.</li>
               <li>etc.</li>
            </ul>
        </li>
    </ul>
</nav>
4

1 に答える 1

1

これはそれをします

$(document).ready(function() {
    $("#cp-nav").click(function(e){
        e.stopPropagation(); // this stops the bubbling from going any higher
    });
    $('body').click(function(){ // this is only reached if the clicks comes outside the #cp-nav
        $("#cp-nav ul ul").slideUp('fast');
    });
    $("#cp-nav ul li").click(function() {
        $("#cp-nav ul ul").slideUp("fast", function(){});

        $("ul", this).slideDown("fast", function(){
            $("ul", this).slideUp("fast");
        });
    });
});
于 2012-12-04T01:00:51.007 に答える