我需要做的是在我的菜单中我想在每次函数启动时(页面加载)添加一个完全随机顺序的类(下面列出)
这是我的HTML
<div id="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Why Us</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</div>
这就是我希望每次添加不同类别的顺序
时的结果<div id="menu">
<ul>
<li><a href="#" class="li-one" >Home</a></li>
<li><a href="#" class="li-five">About Us</a></li>
<li><a href="#" class="li-three">Portfolio</a></li>
<li><a href="#" class="li-two">Why Us</a></li>
<li><a href="#" class="li-four">Contact Us</a></li>
</ul>
</div>
下面我列出了所有课程。
.li-one .li-two .li-three .li-four .li-five
我花了很多时间试图弄明白没有结果
非常感谢您的帮助
答案 0 :(得分:10)
如下所示:
function randOrd() {
return (Math.round(Math.random())-0.5);
}
$(document).ready(function() {
var klasses = [ 'li-one', 'li-two', 'li-three', 'li-four', 'li-five' ];
klasses.sort( randOrd );
$('#menu ul li a').each(function(i, val) {
$(this).addClass(klasses[i]);
});
});
答案 1 :(得分:5)
使用jQuery,您可以执行类似
的操作var classes = ['li-one', 'li-two', 'li-three', 'li-four', 'li-five'];
function randomizeList(listObj) {
$(listObj).each(function() {
$(this).addClass(classes[Math.Random()*classes.size]);
});
}
答案 2 :(得分:1)
我会看看http://blog.mastykarz.nl/jquery-random-filter/
for (c in ['li-one', 'li-two', 'li-three', 'li-four', 'li-five'])
// select the next link w/o a class starting with "li"
$("a:not(class^=li):random").addClass(c);
答案 3 :(得分:0)
这将导致类名比普通随机函数更好地改组:
Array.prototype.shuffle = function (){
var i = this.length, j, temp;
if ( i == 0 ) return;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
};
var classes = new Array('one', 'two', 'three', 'four', 'five');
classes.shuffle();
var menu = $('#menu ul li');
for (var i = 0; i < menu.length; i++)
{
menu.eq(i).children('a').addClass('li-'+classes[i]);
}
答案 4 :(得分:0)
<script type="text/javascript">
var style=new Array('li-one','li-two','li-three','li-four','li-five');
var l=style.length;
$(document).ready(function(){
var t=(new Date()).getSeconds()%l;
if(t>l){ while(t>l) t=(new Date()).getSeconds()%l; }
var i=t;
$("div#menu ul li a").each(function(a,b){
if(i<l){
$(b).addClass(style[i++]);
}else{
if(t>=0){
$(b).addClass(style[--t]);
}
}
});
});
</script>