2015-11-13 3 views
2

Я переменная, которая генерирует случайное число в диапазоне от 1 до 5.Использование JQuery .find, чтобы найти соответствующий LI

У меня неупорядоченный список с приведенной ниже структуре

<ul id="list-items"> 
    <li id="1"></li> 
    <li id="2"></li> 
    <li id="3"></li> 
    <li id="4"></li> 
    <li id="5"></li> 
</ul> 

Я хочу для добавления класса к элементу списка, относящемуся к случайной сгенерированной переменной. До сих пор у меня есть это -

var random_variable = 1; 

if (("#list-items").find("#"+random_variable+"").length) { 
    $(this).addClass("selected"); 
} 
+0

Не похож рандомизированы на все в Опубликованных HTML-разметке и потому, что идентификаторы должны быть уникальными в контексте документа, я думаю, вы действительно не хотите истинный рандомизированный номер как ID –

+0

Только быстрая «наилучшая практика» - Я бы отговорил вас от использования только чисел в качестве идентификаторов элементов. –

ответ

3

Основная проблема заключается в том, что this не распространяется до элемента вашего условного оператора. В этом случае относится к глобальному объекту window, поэтому он не работает.

Вы можете удалить условный оператор и упростить код на следующее:

$('#list-items #' + random_variable).addClass("selected"); 

Там нет необходимости, чтобы проверить, если элемент существует, потому что если это не класс просто не добавляется.

+0

Или просто: $ ('# '+ random_variable) .addClass (" selected ");' –

1

Вам действительно не нужно использовать .find(). Поскольку вы используете числа как id, просто используйте это как селектор в JQuery. Просто будьте осторожны, когда вы создаете случайное, что оно попадает в рамки ваших элементов, иначе ничего не произойдет.

$(function(){ 
var random = 1; 
var li = '#'+random; 
$(li).addclass(//stuff); 
}); 
Смежные вопросы