2012-07-25 52 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")));