2011年10月07日

jQuery豆知識

IE8ではtoggleが使えない。
jQuery側でis(":hidden")の結果が常にfalseになるバグがあって、常に非表示になってしまうようだ。
ちゃんとした検証はしてないので詳細は放置。
バージョン1.4以降は直っているという話があるけど、今やってる仕事では他のモジュールも使われている所為なのか、1.5でも直っていない。
特にOSがXPだとIEは6〜8になるので、最新バージョン以外は切り捨て、と言った場合でも対象にせざるを得ない。
ので必要な場合は自力で実装する。

基本となるのはこう。

if ($(this).css('display') == 'none') {
$(this).slideDown(300);
} else {
$(this).slideUp(300);
}

functionにして引数で時間指定とか出来るようにすると使い回し易い。

function slideToggle(target, speed) {
if ($(target).css('display') == 'none') {
$(target).slideDown(speed);
} else {
$(target).slideUp(speed);
}
}

更にclickイベントに追加したりとか。

$(target).bind('click', slideToggle(target, 300));

speedが300なのは趣味。
ストレスになりそうなほど遅くなく、見えなくなるほど早くなくって感じなのがこの辺。
posted by ちはやふづき at 03:00| Comment(0) | TrackBack(0) | プログラム