jqueryを使用して、要素の表示・非表示をさせたいのですが、
下記、コードで問題が出ています。
<html>
<head>
</head>
<script src="js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$(".dis").toggle(
function(){
$("table.displayArea").attr("style","display:block");
},
function(){
$("table.displayArea").attr("style","display:none");
}
);
});
</script>
<body>
<a href="#" class="dis">test</a>
<table class="displayArea" style="display:none">
<tr>
<td><select name="">
<option selected="selected">選択</option>
</select></td>
</tr>
</table>
</body>
</html>
aタグをクリックするとselectフォームがちゃんと表示されるんですが、
再度クリックしてもselectフォームが非表示にされません。
試しに、フォームでなくただのテキスト文字にしてみると、
ちゃんと、表示・非表示がうまくいきます。
その他のフォーム要素も試してみたのですが、問題ありませんでした。
なのでselect要素だけちゃんと非表示されないようです。
何が原因なのかお分かりになる方がいらっしゃいましたら、
ご教授いただけると幸いです。
No.3ベストアンサー
- 回答日時:
IE6 のバグみたいですね。
http://support.microsoft.com/kb/898138/ja
IE7 では改善されているようです。
提示コードの原因箇所
$("table.displayArea").attr("style","display:block");
$("table.displayArea").attr("style","display:none");
display を切り替えること自体がバグの原因になります。
幸い jQuery の toggle ではその辺も考慮されているようですので、関数指定なしの toggle() で実行するようにすると良いと思います。
コードは #1 の方が提示されていますので、そちらを参照してください。
No.2
- 回答日時:
無駄にかぶせてすみません。
JS 無効環境では何も表示されなくなるので
style="display:none"
のような書き方はなるべく避けたほうが良いでしょう。
代替案としては、読み込み時に toggle を実行する。または、スタイルシートに
.hidden{ display:none }
などを JS で追加するなどでできると思います。
ご回答ありがとうございます。
大変申し訳ありません。
いちばん肝心なことを書くのを忘れていました。
IE6だけ上記の現象が発生してしまいます。。。
なぜでしょう?
No.1
- 回答日時:
trfnc223の書いたソースで動作を確認したところ、問題なく表示・非表示できましたが・・。
jQueryは、ページ全体に指定されたタグを探しにいってしまうので、エレメントの指定は、なるべくアクセスしやすく指定した方が良いかもしれません。
例えば、
<a href="#" class="dis">test</a>
↑エレメントの指定
$('a.dis')
今回に関しては、クラスだったのでなんともいえませんが。。。
一つだけならidにした方が処理の速度も上がります。
すいません。。余計なことを・・・
問題の点なのですが
少し、書き方を変えて同じ動作を参考までに
<html>
<head>
</head>
<script src="js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("a.dis").click(function(){
$('table.displayArea').toggle();
})
});
</script>
<body>
<a href="#" class="dis">test</a>
<table class="displayArea" style="display:none">
<tr>
<td><select name="">
<option selected="selected">選択</option>
</select></td>
</tr>
</table>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンを押したあとに画像を表...
-
スマホ上で、左右スワイプで次...
-
ラジオボタンを複数選択したと...
-
jsonテキストデータの並び替え...
-
Adobe acrobat proでフォームを...
-
画面に表示したらアニメーショ...
-
2025年相性がいい人のサイトの...
-
jQueryでのレスポンシブが綺麗...
-
jsで質問です。 formをsubmitし...
-
二次元配列を使って順位をだす...
-
【JS】selectでchangeした時の...
-
sessionStorageを調べています。
-
jsで質問です。 ボタンが二つ存...
-
ブックマークレットについて
-
タグを教えてください。
-
CookieをWebStoeageに変える
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのcolorboxを読込直後に...
-
サイトにアクセスした際、数秒...
-
jquery ui.resizable 使い方
-
base64encodeでの文字化けについて
-
スライド写真で2、3枚目をラ...
-
jQuery が動作しません。
-
jQueryと他のライブラリを同時...
-
マスターページでのJavaScriopt...
-
jquery select要素のdisplay:no...
-
jqeryのslicksliderのパスにつ...
-
javascriptとjuaryを同時に
-
Javascriptのエラーに悩まされ...
-
<div>のタッチ状態を維持したま...
-
javascript 引用符
-
JavaScriptで背景や文字色を色→...
-
jqueryとlightboxが一緒に動作...
-
Base64に変換したHTMLの<script...
-
jQueryBlockUIをフレーム内で動...
-
mootoolsとjQueryの共存がうま...
-
ヤフーのジオの広告のような技法
おすすめ情報
