2012-07-25 58 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 2012-07-25 17:57:16

+0

可能的重複[隨機jQuery序列的div元素](http://stackoverflow.com/questions/1533910/randomize-a-sequence-of-div-elements-with-jquery) – 2012-07-25 18:01:31

+0

我什麼都沒有使用數據庫(它是統計),在這種情況下,來源無關緊要。 – 2012-07-25 18:05:56

回答

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

謝謝,這正是我要找的。 – 2012-07-25 20:01:09

0

這將以隨機順序返回鏈接。

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

所以我想如果你把鏈接放在一個容器中,你可以用重新排序的數組重新填充它。

+0

我發現這個解決方案:http://stackoverflow.com/a/9641564/1102592。我也會試試這個@nico – 2012-07-25 18:05:14

0

您可以使用ORDER BY RAND()或使用jQuery 您可以分配的ID給每個標籤和隨機其追加到它的父元素做在你的MySQL查詢擺在首位使用這個插件:Random - jQuery plugin

+0

我認爲他的頁面是靜態的,否則當從數據庫中拉出鏈接時'ORDER BY RAND()'是一個很好的選擇。 – nico 2012-07-25 18:07:27

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")));