2015-11-13 38 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必須在文檔方面獨特的,我想你真的不想要真正的隨機數作爲ID –

+0

只是一個快速的「最佳實踐」 - 我會阻止你只使用數字作爲元素ID。 –

回答

3

的主要問題是,this沒有範圍限制在你的條件語句的元素。在這種情況下,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); 
});