jQuery show() hiba: táblázatok soraira (table tr) nem érvényes, a táblázat szétcsúszik
Létezik egy jQuery fgv: show(). Ennek az a szerepe, hogy a nem látható html elemet láthatóvá teszi.
Tehát végülis annyi történik, hogy egy html elemet ami el van rejtve (display: none;) megmutat, mégpedig úgy, hogy inline css-sel ad neki egy display: block tulajdonságot.
Ez így rendben is lenne, ha nem akarnánk táblázatok soraira is alkalmazni (table tr). A probléma az, hogy pl. a Firefox szétcsúszik, ha a sor elemre vonatkozó css display: block. Erre a megoldás a display: table-row css definíció. Ezzel viszont az a gond, hogy az IE nem támogatja. Az IE viszont kezeli a táblázat soraira is a display: block tulajdonságot.
Nem értem miért nem építették bele a jQuery-be a böngésző ellenőrzését a show() fgv. meghívása esetében, de akkor vegyük figyelembe magunk, hiszen nem mindegy, hogy a táblázatunk így néz ki:
Vagy így:
Láthatjuk, hogy az első esetben a táblázat első oszlopa sokszorosára nőtt, ezért az oldal szétcsúszott.
JS-ből lekérdezni a böngésző típusát, nem nehéz, és a jQuery-be is beépített (core).
A következő kódot aztán símán beépíthetjük egy saját fgv-be.
-
<script type="text/javascript">
-
function show_tr_element(object) {
-
if ($.browser.msie) {
-
object.show();
-
} else {
-
object.css("display", "table-row");
-
}
-
}
-
</script>
hosszu.kalman Reply:
January 3rd, 2009 at 1:45 pm
Nem még, de amint lesz időm megfogalmazom nekik is!
[Reply]