这可能不是最短的方法,但根据我的经验,它始终是最健壮的方法 - 因为 jQueryhide()
和show()
基本上将属性display: none
和display: block
(分别)分配给它链接到的元素。toggle()
就像两者结合,仍然只支持display: block
。例如,如果您宁愿拥有display: inline
ordisplay: inline-block
而不是 ,那可能会给您带来不希望的结果display: block
。
所以我的建议是:总是使用类来控制CSS
,而不是JavaScript
. 这将确保您完全控制自己的风格。以下示例将运行良好:
HTML
<a class="click-trigger" href="#"></a>
<div class="element"></div>
JavaScript
var c = $('.click-trigger');
var e = $('.element');
c.click(function() {
if (e.hasClass('hidden')) {
e.removeClass('hidden').addClass('show');
} else {
e.removeClass('shown').addClass('hidden');
}
});
CSS
.click-trigger,
.element { height: 20px; width: 20px; }
.click-trigger { background-color: red; display: block; }
.element { background-color: blue; }
.hidden { display: none; }
.shown { display: block; }
/*
display alternatives not supported by jQuery's 'show()' nor 'toggle()':
display: inline;
display: inline-block;
display: list-item;
display: flex;
display: inline-flex;
display: table;
display: inline-table;
display: table-row-group;
display: table-column;
display: table-column-group;
display: table-header-group;
display: table-footer-group;
display: table-row;
display: table-cell;
display: table-caption;
*/
在此示例中,为了简化,标记被剥离。工作小提琴。