2011-09-28 87 views
2

此腳本在firefox,IE和chrome中可用,但不適用於safari。有任何想法嗎?簡單的jquery腳本不能在safari中工作

真正奇怪的是,當我把一個alert().get()回調結束,則執行(即使是在野生動物園)。所以代碼不會崩潰,它只是不修改DOM。

<html> 
<head> 
    <title>Title for this webpage</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 

<!- CSS styling --------------------------------------------------------------> 
<style type="text/css"/> 
body{ 
    margin:0px; 
    padding:0px; 
    font-family:verdana, arial, helvetica, sans-serif; 
    font-size:14px; 
    text-align:left; 

    width:900px; 
    margin-left:auto; 
    margin-right:auto; 
    position:relative; 

    background-color:#fff; 
} 

#mainBox{ 
    width:700px; 
    margin:30px; 
    border:2px solid #ddd; 
    margin-left:auto; 
    margin-right:auto; 
} 

#mainHeader, #mainFooter, #mainContent{ 
    margin: 5px; 
    padding:10px; 
    border: 2px dashed #ddd; 
    text-align:center; 
} 

.shuffleMe{ 
    margin: 5px; 
    padding:10px; 
    border: 2px solid #ddd; 
    text-align:left; 
} 
</style> 

<!- Jquery/javascript --------------------------------------------------------> 
<script type="text/javascript"> 
//Code modified from: http://stackoverflow.com/questions/1134976/how-may-i-sort-a-list-alphabetically-using-jquery 
$(document).ready(function(){ 
    var my_list = $('.shuffleMe').get(); 
    my_list.sort(function(){return(Math.random() >.5);}); 
    $.each(my_list, function(index, item) { $('#mainContent').append(item); }); 
}); 
</script> 

</head> 

<!- HTML body content --------------------------------------------------------> 
<body> 
<div id="mainBox"> 
    <div id="mainHeader"> --- HEADER --- </div> 
    <div id="mainContent"> 
     <div class="shuffleMe">AAA</div> 
     <div class="shuffleMe">BBB</div> 
     <div class="shuffleMe">CCC</div> 
     <div class="shuffleMe">DDD</div> 
    </div> 
    <div id="mainFooter"> --- FOOTER --- </div> 
</div> 

</body> 
</html> 
+0

您是否嘗試過使用另一個版本的jQuery來查看它是否是該版本中的錯誤?另外,我已經看到很多有關Math.random()在safari上報告的問題,也許有問題 – Einacio

+1

它正在修改DOM,但排序順序沒有改變。如果您調整'$ .each()'語句中每個項目的HTML,就會看到它正在更新。我試圖弄清楚爲什麼'sort()'方法不起作用。 –

+0

hm。好的建議。我剛剛嘗試了幾個不同版本的jquery - 沒有改變。另外,我插入了一行:alert(Math.random());每個重新加載給我一個不同的隨機數字,所以我不認爲這是問題... – Abe

回答

3

這是您的排序功能的問題。排序函數應該返回-1(更少),0(等於)或1(更多);它不應該返回一個布爾值。在這種情況下,我認爲它在其他瀏覽器中起作用的事實是一種僥倖。

my_list.sort(function(){return(Math.random() - .5);}); 
+0

啊人,打我發佈的答案秒:) –

3

您需要更改排序功能。看到這個jsFiddle。此代碼正在工作:

var my_list = $('.shuffleMe').get(); 
my_list.sort(function(){ 
    return 0.5 - Math.random(); 
}); 
$.each(my_list, function(index, item) {$('#mainContent').append(item); });