我的代码:
<script type="text/javascript">
$(function(){
$("body").click(function(){
$("ul").toggle("slow");
var b = $("ul").css("display");
console.log("ul display :"+b);// unfortunately,always returns block!
});
});
</script>
</head>
<body>
<nav>
<ul>
<li><a href="/">home</a></li>
<li><a href="/archive/">Archive</a></li>
<li><a href="/about/">About</a></li>
<li><a href="/contact/">Contact</a></li>
</ul>
</nav>
</body>
</html>
我使用 jquery toggle() 函数来显示/隐藏。但是toggle()不会改变css值,所以不能用.css("display")函数来检查显示的状态。即使元素是隐藏的,.css("display")总是返回"block",如果您的原始 CSS 表定义了“display:block;”。
您如何检测显示状态,这意味着元素是显示还是隐藏?或者,您知道更改 toggle() 无法实现的实际显示值的方法吗?
注意:不能使用下图的方式,因为前面的代码是测试代码,而在实际代码中,toggle()和.css("display")在不同的函数中,执行的时间完全不同。
$("ul").toggle("slow", function() {
...
}