JSFiddle не работает в Safari 4.0.5 на Windows - PullRequest
1 голос
/ 02 августа 2011

Я впервые пробовал JSFiddle в Safari. Есть ли какая-то глупая причина, по которой 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

UPDATE: Я пробую это во всех других браузерах, нахожу различное поведение во всех них. Это делает именно то, что предполагается в 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");
    });
});

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Попробуйте это

$(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>");
        }
    });
});
2 голосов
/ 02 августа 2011

Попробуйте кнопку jsFiddle JSLint - она ​​показывает пару ошибок, которые, я думаю, вызывают проблемы с отображением.

0 голосов
/ 09 августа 2011

Мне кажется, что есть ограничения с JSFiddle и Safari 4.0.5.Я не могу заставить работать даже самые простые селекторы и запустить очень простую привязку.

Этот работает в любом браузере, который я пробовал (несколько версий FF, IE 7 и 8,Chrome 12.0.x и Safari 5.1).Если кто-то может объяснить, почему я хотел бы услышать это иначе, я просто предположу, что это ошибка в Safari 4 или JSFiddle.В любом случае я перехожу на более современные браузеры.

...