- ベストアンサー
jQueryにてIEでの不具合 each処理?
- cromeやfirefoxでは正常に動作するが、IEでは一部動かないパーツがある
- クリックしたボタンの数値があるULの色を変えるもので、100と300は正常に変わるが200は変わらない
- <li>の中で最後に書かれている数値が効かなくなるようで、100と200を入れ替えると100が効かなくなる(IEのみ)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> if($(this).text() == val){ の前で $(this).text() の値を alert($(this).text()); で調べればわかるけど、 <li>200</li> の .text() は "200" ではなくて "200 " が帰ってくる。 変な値が帰ってくるのは IE が Quirks モードで動作しているからかも。 対処方法だけれど、 HTML の初めに DOCTYPE を宣言して IE を標準モードにするか <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> とても勧められないけれど、どうしても Quirks モードのままがいいなら、 UL の閉じタグを改行しないで LI タグのすぐ後ろに書けば、回避できるとおもう。 <ul> <li>100</li><li>200</li></ul> <ul> <li>300</li><li>200</li></ul>
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
ようは、これと同じことでは? http://okwave.jp/qa/q7707134.html MSお得意の「仕様」なのかも知れませんが、 if($(this).text() == val){ の時にIEだけ切り出して、テキストを読み替えてあげるか、あるいは最初に整理しておくか… 動的に値が変化するのか、実際にテキストの値が取る可能性の範囲がどのようなものかなどを考慮して、自衛手段を講じるしかなさそう。
お礼
そうですね・・ これでどうこうしようというのが無理があるというのが理解できた気がします。 自衛手段をとりたいと思います。 ありがとうございました。
お礼
ご回答ありがとうございます。 >"200 " 違う値が返ってくるんですね、標準モードで試してみましたがダメでした。 <ul> <li>100</li><li>200</li></ul> このやり方で動作したました!全てのhtmlを変えるとなると現実的ではないですが、 回避する手段を教えていただき大変助かりました。 もう少し探ってみたいと思います、 ありがとうございました!