1

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");
    });
});
4

3 に答える 3

2

これを試して

$(document).ready(function(){
    $("#productSize").change(function(){
        var me = $(this);
        var avail = parseInt(me.find("option:selected").text().split("-")[1].trim());

        $("#quantity option").remove();

        for(var i=1; i<= avail; i++) {
            $("#quantity").append("<option value='"+i+"'>"+i+"</option>");
        }
    });
});
于 2011-08-02T14:06:50.027 に答える
2

jsFiddle JSLint ボタンを試してみてください。表示の問題を引き起こしていると思われるいくつかのエラーが表示されます。

于 2011-08-02T14:01:46.883 に答える
0

JSFiddleとSafari4.0.5には制限があるように思われます。最も単純なセレクターでさえも機能させて、非常に単純なバインディングを開始することはできません。

これは、私が試したすべてのブラウザー(FF複数バージョン、IE 7および8、Chrome 12.0.x、およびSafari 5.1)で機能します。誰かが私がそれを聞きたい理由を説明できるなら、そうでなければこれはSafari4またはJSFiddleのバグであると思います。いずれにせよ、私はより新しいブラウザに移行しています。

于 2011-08-09T15:31:41.173 に答える