jQuery菜单不显示/隐藏

时间:2012-11-28 17:32:21

标签: javascript jquery

这个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);
 });

3 个答案:

答案 0 :(得分:3)

您可以轻松自己并使用toggle()

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

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

答案 1 :(得分:2)

为什么不使用.toggle()?如:

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

您也可以使用慢速,普通,快速设置切换速度:

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

答案 2 :(得分:1)

openMenu不知道“this”指的是什么。这应该有用......

$(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);

});

但其他人都是对的。切换功能对于这样的事情非常有用。