我必须设置从display: none
到display: inline-block
的元素
点击另一个元素时。
Jquery始终检测到它display: none
(function ($) {
$(document).ready(function() {
$("#click").click(function () {
if($("#show").css('display','none')) {
$('#show').css('display','inline-block');
} else {
$('#show').css('display','none');
}
});
});
})(jQuery);
#show {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="click">
Click
</div>
<div id="show">
Text
</div>
答案 0 :(得分:4)
if
声明错误,
if($("#show").css('display','none'))
您要将css属性分配到show
语句中的if
元素,而是使用.is(':visible')
。
if(!$("#show").is(':visible'))
答案 1 :(得分:1)
更新if()
以使用is(':visible')
功能:
var displayType = ( ! $("#show").is(':visible') ) ? 'inline-block'
: 'none';
$('#show').css('display', displayType);
答案 2 :(得分:1)
与许多jQuery函数一样,css根据您传递的参数有两种不同的行为。
如果只传递第一个参数(css属性),则返回css属性的值。
如果传递css属性和值,它会设置值并返回实际的jQuery对象。
试试这个:
(function ($) {
$(document).ready(function() {
$("#click").click(function () {
//Get the div in jquery object.
var div = $("#show");
//Determine the actual value of the display.
var display = div.css('display');
//Determine the desired value.
if (display == 'none')
display = 'inline-block';
else
display = 'none';
//Change the value
div.css('display', display);
});
});
})(jQuery);