MAX Factory

Icon

Flash lite(携帯Flash)、Flex、widgetなどの技術メモ

[jquery]IE8でtrに.toggle()が効かない

jqueryを利用してテーブルをアコーディオンのように列を表示するUIを作成していて、
IE8だけが列を開くことができなかった。
jqueryのバージョンは1.3.2です。

下記のようにjqueryのtoggle関数を利用して実装していました。
※利用しているソースは参考させてもらった下記のサイトから抜粋しています。
http://stackoverflow.com/questions/975153/jquery-toggle-not-working-with-trs-in-ie

//html
<a id="readOnlyRowsToggle">Click</a>
<table>
  <tr><td>row</td></tr>
  <tr><td>row</td></tr>
  <tr class="readOnlyRow"><td>row</td></tr>
  <tr class="readOnlyRow"><td>row</td></tr>
  <tr class="readOnlyRow"><td>row</td></tr>
</table>


//javascript
$(document).ready(function() {
    $(".readOnlyRow").hide();
    $("#readOnlyRowsToggle").click(function() {
        $(".readOnlyRow").toggle();
    });
});

toggle関数が効かない原因は、
$(classname).is(“:visible”)
が必ずtrueを返すためにshow()が実行されないため。

if($(classname).is(":visible"))//IE8 always evaluates to true.
     $(classname).hide();
else
     $(classname).show();

なので、下記のようにtoggle関数を利用しない方法で実装する。

var elem = $(classname)[0];
if(elem.style.display == 'none')
     $(classname).show();
else
{
     $(classname).hide();                      
}

これでIE8も問題なく動作した。

◯参考サイト
http://stackoverflow.com/questions/975153/jquery-toggle-not-working-with-trs-in-ie

[jquery]JQUERY ALERT DIALOGS

JQUERY ALERT DIALOGS
こちらを利用するとjsのダイアログ(alert,confirm,prompt)のviewを自由に変えることができます。

今回利用したのは、viewの変更目的ではなくjAlert関数を利用した際に、

1.画面上のボタンなどのイベントを無効としてくれる
2.alertのボタンクリック時のイベントハンドリングが容易
jAlert(“メッセージ”, “タイトル”, function(){/*クリック時のイベント*/});

という点で利用しました。

※IE6でダイアログの幅が横一杯に広がってしまうのは、問題点としてあるとのことです。

○利用方法とサンプルをアップしているブログ記事がありました。
http://javascript.webcreativepark.net/library/jquery_alert_dialogs

 

2010年9月
« 7月    
 12345
6789101112
13141516171819
20212223242526
27282930  

プロフィール

Author:max

ディレクター(モバイルサイト・PCサイト・アプリ)

場合によっては、開発/制作業務もやっています。

元クリエイターなので趣味が面白そうなものを作る事

◆受賞歴
モバイルウィジェットコンテスト

Yahoo×SoftBank主催

[アドビシステムズ賞(銀賞)]
ペパボクリエイターズコンテスト 戻るボタンアワード

paperboy&co.主催

[ムームードメイン賞]

Twitter

Twitter Updates

    follow me on Twitter