на самом деле 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 важно! вероятно, здесь не сработает - поскольку установка стиля в строке обычно сильнее любого другого правила