2012-05-14 2 views
2

У меня есть неупорядоченный список со списком элементов. У меня есть класс под названием «active», который я хочу случайно добавить в элемент списка. У меня теперь есть это:добавление класса в случайный элемент списка

// I want this class added on a random list item 
$("#gallery li:first-child").addClass("on"); 

Math.random?

+0

Спасибо всем за быстрые ответы! Я беспорядочно (: p) выбрал правильный ответ. – Jonathan

ответ

6
var random = Math.floor(Math.random() * 1000); 

var $li = $("#gallery li"); 
$li.eq(random % $li.length).addClass("on"); 
4

попробовать что-то, как показано ниже,

var $li = $('#gallery li'); 
$li.eq(Math.floor(Math.random()*$li.length)).addClass("on"); 

Edit: обновление, чтобы избежать DOM повторного запроса для li

+0

Вы запрашиваете DOM дважды без уважительной причины. :( – gdoron

0

Math.random как вы получаете случайные числа, поэтому все, что вам нужно сделать, это получить номер между 0 и числом <li> s (минус 1) и добавьте к нему класс.

var $lis = $("#gallery li"); 
$lis.eq(Math.floor(Math.random() * $lis.length)).addClass("on"); 
1
var licount = $("#gallery li").length; 
var randomnumber=Math.floor(Math.random()*(licount+1)); 

$("#gallery li:nth-child("+randomnumer+")").addClass("on"); 
+0

Вы запрашиваете DOM дважды без уважительной причины. :( – gdoron

+0

Да, я знаю, это было просто показать ему, как это работает ... :) –

0

, если вы знаете, количество Li (здесь 10 LI)

rand=Math.floor(Math.random() * 10); // 0 to 9 
$("#gallery li").get(rand).addClass("on"); 

еще

var $li=$("#gallery li"); 
rand=Math.floor(Math.random() * $li.length()); // 
$li.eq(rand).addClass("on"); 
+0

Вам нужно использовать '.eq()', а не '.get() '.' .get() 'возвращает элемент DOM, а не объект jQuery. –

+0

@rocket sorry Я исправляю свой код, прежде чем комментировать, но спасибо :) –

Смежные вопросы