MAX Factory

Icon

モバイル(フィーチャーフォン、スマートフォン、タブレット)を中心とした技術メモ

[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

Category: javascript, jquery

Tagged:

 

2010年4月
« 3月   5月 »
 1234
567891011
12131415161718
19202122232425
2627282930