1

このjqueryコードには少し問題があります.openMenu関数を直接呼び出すと機能しますが、内部では機能しません。

 $(document).ready(function() {

 function checkMenu() {

 if($(this).find('ul').css('display') == 'none') {
    openMenu();
 } else { 
    closeMenu();
 }
 }

 function openMenu() {  
    $(this).find('ul').css({display: "block"});
 }

function closeMenu() {
  $(this).find('ul').css({display: "none"});
 }


 $('ul li:has(ul)').click(checkMenu);
 });
4

3 に答える 3

3

あなたはそれを自分で簡単にして使うことができますtoggle()

$('ul li:has(ul)').click(function(){
    $(this).find('ul').toggle();
});

http://api.jquery.com/toggle/

于 2012-11-28T17:35:31.720 に答える
2

.toggle() を使用しないのはなぜですか? そのような:

$(this).find('ul').toggle();

また、低速、通常、高速のいずれかを使用してトグル速度を設定できます。

$(this).find('ul').toggle('fast');
于 2012-11-28T17:36:51.650 に答える
1

openMenu は、「これ」が何を指しているのかわかりません。これはうまくいくはずです...

$(document).ready(function() {

function checkMenu() {
    var me = $(this);
    if(me.find('ul').css('display') == 'none') {
        openMenu(me);
    } else {
        closeMenu(me);
    }
}

function openMenu(me) {

    //this isn't defined..
    me.find('ul').css({
        display: "block"
    });
}

function closeMenu(me) {
    me.find('ul').css({
        display: "none"
    });
}


$('ul li:has(ul)').click(checkMenu);

});

しかし、他の人は正しいです。トグル機能は、このような場合に非常にうまく機能します。

于 2012-11-28T17:44:13.497 に答える