实际上,jQuery只是清除了“ display”属性的值,而没有将其设置为“ block”(请参阅jQuery.showHide()的内部实现)-
function showHide(elements, show) {
var display, elem, hidden,
...
if (show) {
// Reset the inline display of this element to learn if it is
// being hidden by cascaded rules or not
if (!values[index] && display === "none") {
elem.style.display = "";
}
...
if (!show || elem.style.display === "none" || elem.style.display === "") {
elem.style.display = show ? values[index] || "" : "none";
}
}
请注意,您可以覆盖$ .fn.show()/ $。fn.hide();。隐藏时将原始显示存储在元素本身中(例如,作为属性或在$ .data()中);然后在显示时再次应用回去。
另外,使用CSS 很重要!在这里可能行不通-因为设置样式内联通常比任何其他规则都强