Safari で JSFiddle を試したのはこれが初めてです。JSFiddle が Safari 4 で正しく動作しないという馬鹿げた理由はありますか? Safari 5 が正常に動作するという報告がありました。それで、私はここで何が欠けていますか?
JavaScript:
$(document).ready(function(){
$("#productSize").change(function(){
var me = $(this);
var avail = me.find("option:selected").html().split("-")[1].trim();
$("#quantity option").each(function() {
$(this).remove();
});
for(var i=1; i<= avail; i++) {
$("#quantity").append("<option>"+i+"</option>");
}
});
});
HTML:
<label>Sizes
<select name="item_options[product_size]" id="productSize">
<option value="s">small - 10</option>
<option value="m">medium - 1</option>
<option value="l">large - 5</option>
<option value="xl">extra large - 10</option>
</select>
</label>
<label>Quantity
<select name="quantity" id="quantity">
</select>
</label>
問題を示す JSFiddle: jsfiddle
更新: 他のすべてのブラウザーでこれを試しており、すべてのブラウザーで異なる動作を見つけています。これは、まさに Firefox で想定されていることを行います。問題はありません。IE は私がトリム() を呼び出す方法を好まないように見えるので、それに対応するために JSFiddle を変更しました。
$(document).ready(function(){
$("#productSize").change(function(){
var me = $(this);
var myText = me.find("option:selected").text().split("-")[1];
var avail = parseInt($.trim(myText), 10);
$("#quantity option").remove();
for(var i=1; i<= avail; i++) {
$("#quantity").append("<option value='"+i+"'>"+i+"</option>");
}
});
});
更新された JSFiddleこれはテスト済みで、IE、FF、Chrome で動作しますが、まだ何も得られず、$(document).ready と .change() は Safari 4 でも実行されません。
更新 #2 さらに明確にするために、この Jquery コードは JSFiddle/safari 4.0.5 では実行されません。アラートも表示されないため、.change() は実行されていません...
$(document).ready(function(){
$("#productSize").change(function(){
alert("Hello World");
});
});