に何らかの理由でこの機能がjavascript関数ブレークドロップダウンメニューが、ちょうどFirefoxの
function fadeOUT_sect(id) {
if ($("div#"+id).css("display")!="none") {
$("div#"+id).fadeOut();
$("div#"+id).find("ul").each(function() {
var name = $(this).attr("id");
$(this).find("input").removeAttr("checked");
if ($(this).find("select > option:first").val() != "-9") {
$(this).find("select > option:first").attr({
value:"-9",
selected:"selected"
}); // $.attr()
} // if select
// I've isolated the problem to this if-test
if (!($(this).find('input[value="-9"]').val())) {
// ^I think the problem is here.
$(this).find('input[type="text"]').val('');
$(this).append('<input name="'+name+'" type="radio" value="-9" checked="checked" />');
} // if
}); // $.each()
} // if
} // function
当初はちょうどFirefoxで奇妙な何かをやっている、問題はこのように見えるが表示されますHTML:
<div id="2" style="display:none">
<ul id="state">
<li>What state do you live in?</li>
<li><select>
<option value="-9" selected="selected"></option>
<option value="AL">Alabama</option>
…
</select></li>
</ul>
を
fadeIn()
の後にdiv#2
が表示され、最初の<option>
は<option value=""></option>
になります。ドロップダウンメニューをクリックすると、すべてのオプションが表示されます。問題が始まる:
オプションを選択すると、ドロップダウンは消えますが、バー/バブルは空白です(空白のオプションは選択しませんでした)。ドロップダウンをもう一度クリックすると、リスト内で自分のオプションが強調表示されます。私は離れてクリックし、バー/バブルは再び空白になります。 3回目にドロップダウンをクリックし、空白のオプションを選択し、クリックして戻ってクリックし、非空白のオプションを選択すると、突然バー/バブルにテキストが表示されます。
問題は、(Macのみ)(MacとWindowsの両方)で発生します。 Safari/Chrome、Opera、IE7 +(IE6はページを表示できません)。
EDIT私は、複数のコンピュータ上のFirefox、Safariの/クローム、オペラでこれをテストし、同じ結果(そのキャッシュなし/データの問題)を得ました。私はちょうど5から9までのFirefoxのバージョンをテストし、この問題はFirefoxの8+で発生します。http://jsfiddle.net/jshado1/EkDdB/3/
EDIT 3:
EDIT 2はここjsfiddleで再現問題です。 v8のリリースノートを読むと、javascriptに「型推論」を使用し始めたようです(ただし、それが何に影響を与えるか、それがどのように丸められるかはわかりません)。
ありがとうございます!
Resolution:HTMLでselected="selected"
を外し、およびJavaScript/jQueryので.attr({…})
と.removeAttr("selected")
からselected:"selected"
を削除しました。
選択した要素をキャッシュしてください。 'var $ div = $( '#' + id); $ div.css ...、$ div.fadeOut ...、などです。あなたの問題を見つけることができるかどうかがわかります。 – glortho
jsFiddleでこれを設定してみましょう。 – glortho
あなたはどのように上記の機能を呼びますか?また、それを壊すことはありませんが、なぜ$( "#" + id)ではなく$( "div#" + id)と言いますか? (IDがユニークであることを考えると、「div」部分はまったく役に立ちません。) – nnnnnn