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 似乎不喜欢我调用 trim() 的方式,所以我更改了 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

试试 jsFiddle JSLint 按钮 - 它显示了几个我认为会导致显示问题的错误。

于 2011-08-02T14:01:46.883 回答
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 回答
0

在我看来,JSFiddle 和 Safari 4.0.5 存在限制。我什至无法让最简单的选择器工作并启动一个非常简单的绑定。

适用于我尝试过的每个浏览器(FF 多个版本、IE 7 和 8、Chrome 12.0.x 和 Safari 5.1)。如果有人能解释为什么我很想听到它,否则我只会假设这是 Safari 4 或 JSFiddle 中的一个错误。无论哪种方式,我都在使用更多当前的浏览器。

于 2011-08-09T15:31:41.173 回答