2012-07-25 2 views
-1

у меня есть такой код (статический):Перемешать порядок некоторых звеньев

<a href="#">link 1</a> 
<a href="#">link 2</a> 
<a href="#">link 3</a> 

Я хотел бы знать, если это возможно, чтобы прочитать эти <a> теги и рандомизации порядок их с JQuery, так что (например):

<a href="#">link 1</a> 
<a href="#">link 3</a> 
<a href="#">link 2</a> 
+0

Что является источником для ссылок? Если вы используете БД, то почему бы не вернуть их в случайном порядке. – RobB

+0

Возможный дубликат [Рандомизировать последовательность элементов div с помощью jQuery] (http://stackoverflow.com/questions/1533910/randomize-a-sequence-of-div-elements-with-jquery) –

+0

Я ничего не использую DB (это statis), источник не имеет значения в этом случае. –

ответ

0
var elems = $('a'); 
elems.sort(function() { return (Math.round(Math.random())-0.5); }); 
for(var i=0; i < elems.length; i++) elems.parent().append(elems[i]); 

FIDDLE

+0

Спасибо, это именно то, что я ищу. –

0

Это вернет ссылки в случайном порядке.

$("a").sort(function() {return 0.5 - Math.random()}) 

Так что я думаю, если вы поместите ссылки в контейнере, то вы можете населить его с переупорядоченным массивом.

+0

Я нашел это решение: http://stackoverflow.com/a/9641564/1102592. Я тоже попробую @nico –

0

Вы можете сделать это в вашем MySQL Query в первую очередь с помощью ORDER BY RAND() или с помощью Jquery можно присвоить идентификатор для каждого а теги и добавлять его в случайном порядке его родительского элемента с помощью этого плагина: Random - jQuery plugin

+0

Я думаю, что его страница статична, иначе 'ORDER BY RAND()' будет хорошим вариантом при извлечении ссылок из БД. – nico

0

Все, звук хороший, но вы могли бы сделать простой плагин в примерно так:

(function($) { 
    $.fn.extend({ 
     randomize: function() { 
      return $.randomize($(this).get()); 
     } 
    }); 
    $.randomize = function(arr) { 
     for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x); 
     return $(arr); 
    }; 
})(jQuery); 

А затем использовать его в качестве такового:

$("#someEleID").prepend($("a").randomize()); 

или:

$("#someEleID").prepend($.randomize($("a"))); 
Смежные вопросы