ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

JavaScript:Internet Explorer 11だけは、子孫要素をまとめて無効にできる?

スポンサーリンク

以前、テーブル内の子孫要素をまとめて無効にするためには、find()とeach()を使うと書きました。
ajya.hatenablog.jp

このとき、当初は

$(".rowall").css("display", "none").prop('disabled', true);

としていました。

この記述を残したまま、以前の記事に書いたfind()とeach()を使いました。

f:id:AJYA:20180919060341p:plain
unsplash-logoCaspar Rubin

Internet Explorer 11だけは、子孫要素もまとめて無効?

普段はMozilla FirefoxまたはGoogle Chromeで動作確認をしています。
Mozilla FirefoxまたはGoogle Chromeで試してみると、期待通りの動作をしていました。
これで問題ないだろうと思って、念のためInternet Explorer 11で動作を確認すると予想外の動作をしました。

予想外の動作というのは、テーブル内の子孫要素のチェックボックスが無効になっていて、テキストボックスは入力できるけれど、テキストボックス自体は無効状態の色になっていました。

予想外の動作を最初に見たときは、Internet Explorer 11ではfind()とeach()を使った処理が途中で終了してしまったのかと思いました。
Mozilla FirefoxまたはGoogle Chromeでは動作しなかった当初の記述が残してあったことを思い出し、

$(".rowall").css("display", "none");

としたところ、予想外の動作はしなくなりました。


jQueryを使っているのだから、ブラウザに関係なく動作すると思っていたので、ブラウザ依存をしてしまうとは予想していませんでした。