Простой скрипт jquery не работает в сафари - PullRequest
2 голосов
/ 28 сентября 2011

Этот скрипт работает в Firefox, IE и Chrome, но не в 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: /1149349/kak-ya-mogu-otsortirovat-spisok-v-alfavitnom-poryadke-ispolzuya-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>

Ответы [ 2 ]

3 голосов
/ 28 сентября 2011

Вам нужно изменить функцию сортировки.Смотрите это jsFiddle .Этот код работает:

var my_list = $('.shuffleMe').get();
my_list.sort(function(){
    return 0.5 - Math.random();
});
$.each(my_list, function(index, item) {$('#mainContent').append(item); });
3 голосов
/ 28 сентября 2011

Это проблема с вашей функцией сортировки. Функция сортировки должна возвращать -1 (меньше), 0 (равно) или 1 (больше); это не должно возвращать логическое значение. Я думаю, тот факт, что он работает в других браузерах, - случайность.

my_list.sort(function(){return( Math.random() - .5 );});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...