2011-08-02 135 views
1

这是我第一次在Safari中尝试JSFiddle。有没有一些愚蠢的理由,JSFiddle在Safari 4中无法正常工作?有人报告说Safari 5可以正常工作。那么我在这里错过了什么?JSFiddle无法在Windows 4.0的Safari 4.0.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: 我在所有的OT尝试这种她的浏览器,在所有这些浏览器中发现不同的行为。这正是它在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>"); 
     } 
    }); 
}); 

Updated JSFiddle这已经过测试,在IE,FF,Chrome的工作,但我还是什么也没得到,在$(文件)。就绪&的.change()甚至没有在Safari 4

执行

更新#2 只是为了进一步阐明,这个jquery代码不会在JSFiddle/safari 4.0.5中运行。我甚至不得到警报所以.change()不运行......

$(document).ready(function(){ 
    $("#productSize").change(function(){ 
     alert("Hello World"); 
    }); 
}); 
+0

仅供参考 - 它适用于Windows 7上的Safari 5.1 –

+3

什么“不工作”? – Matt

+0

它不会为我使用Safari 4做任何事情。事实上,我不能让任何JSFiddles在Safari 4中工作,除非它有一个非常简单的警报(“hello”)。 – kasdega

回答

0

在我看来,有是的jsfiddle和Safari 4.0.5的限制。我连最简单的选择器都无法工作,并启动了一个非常简单的绑定。

This适用于我试过的每个浏览器(FF多个版本,IE 7 & 8,Chrome 12.0.x,& Safari 5.1)。如果有人能解释为什么我喜欢听到它,否则我只会假设这是Safari 4或JSFiddle中的一个bug。无论哪种方式,我正在进入更新的浏览器。

2

尝试的jsfiddle JSLint的按钮 - 它显示了一对夫妇,我认为是造成你的显示问题的错误。

+0

对于其他人来说,那些错误是什么? – Sparky

+0

'$(this).remove();' - 这是未定义的。 –

+0

我没有收到任何JSLint错误。 $(这)一个.remove();绝对应该存在。 – kasdega

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

同样的结果。在Safari 4.0.5的JSFiddle中这样做的时候我什么也得不到。 – kasdega