2012-11-02 30 views
0

我想做一个jQuery的slideUp/slideDown当你点击菜单项中的菜单项。我认为我可以通过根据display属性的值做一个条件来做到这一点,但由于某种原因,它不起作用。我不能正确地获取属性值,我做错了什么?如何获取属性值作为文本在jquery

$(document).ready(function() { 
$("#left-help-menu li").click(function() { 
    if($(this).children().attr('display') == 'none') 
    { 
     $(this).children().css('display', 'block'); 
    } 
    else if($(this).children().attr('display') == 'block') 
    { 
     $(this).children().css('display', 'none'); 
    } 
}); 
}) 

回答

5

display不是html对象的属性。你需要检查你的CSS下一行设定值:

if($(this).children().css('display') == 'none') { 
    $(this).children().css('display', 'block'); 
} 

更妙的是:

$(document).ready(function() { 
    $("#left-help-menu li").click(function() { 
     $(this).children().toggle(); 
    }); 
}) 

编辑:相同的代码意见和变量清晰

$(document).ready(function() { 

    // When all the html has been loaded we locate all the <li> tags 
    var $lis = $("#left-help-menu li"); 

    // After that we bind the click event on them to an anonymous function 
    $lis.click(function() { 

     // Whenever a <li> is clicked this code will run. 

     // First, lets get a hold of the clicked element 
     var $li = $(this); 

     // Now, find all the elements in that <li> 
     $children = $li.children(); 

     // Lastly, lets hide or show them 
     $children.toggle(); 
    }); 
}) 

注意:这实际上并不会使<li>的内容向上/向下滑动。如果您希望可以使用$.slideToggle()方法。

+0

出于某种原因,没有这些选项是否工作正常。起初的第一个建议什么都没做。我做了一个检查,看到默认显示不是阻止,而是内联。当我改变代码时,现在当你点击菜单项时,整个菜单项消失。在第二个建议中,当你点击菜单时,菜单项会出现,但是菜单项disappers ... – user1015214

+0

好的。如果没有看到你的html和css,很难确切地知道发生了什么。不管怎样''.toggle()'可能会帮助你。它只是使用css属性'display'来显示/隐藏元素。如果你有其他的CSS(比如'visibility'和stuff),你可能会遇到麻烦。我会用一些注释和变量名称来编辑我的答案,也许你可以弄清楚什么是错的。 –

0

display是一种风格而非属性。更改.attr().css()

试试这个,

$(document).ready(function() { 
    $("#left-help-menu li").click(function() { 
    if($(this).children().css('display') == 'none') 
    { 
     $(this).children().css('display', 'block'); 
    } 
    else if($(this).children().css('display') == 'block') 
    { 
     $(this).children().css('display', 'none'); 
    } 
    }); 
})