将class添加到所有ul中的随机li
Add class to random li in all ul's
<div id="question-1" name="question"
<ul>
<li name="347815" class="MULTIPLE" id="7548094" value="7548094">1</li>
<li name="347815" class="MULTIPLE" id="7548095" value="7548095">2</li>
<li name="347815" class="MULTIPLE" id="7548096" value="7548096">3</li>
<li name="347815" class="MULTIPLE" id="7548097" value="7548097">4</li>
</ul>
</div>
<div id="question-2" name="question"
<ul>
<li name="347818" class="MULTIPLE" id="7548140" value="7548140">1</li>
<li name="347818" class="MULTIPLE" id="7548143" value="7548143">2</li>
<li name="347818" class="MULTIPLE" id="7548168" value="7548168">Hemköp</li>
<li name="347818" class="MULTIPLE" id="7548169" value="7548169">3</li>
<li name="347818" class="MULTIPLE" id="7548184" value="7548184">4</li>
<li name="347818" class="MULTIPLE" id="7548195" value="7548195">5</li>
<li name="347818" class="MULTIPLE" id="7548208" value="7548208">6</li>
</ul>
</div>
我需要一个 js "jquery" 代码来 select 来自所有 ul 列表的随机 li 元素。列表编号不断变化,所以我需要使用类似 .find(); 的东西。
这是我没有的代码,但它不是 select 所有 ul 中的一个 li,它是 selects random li in random ul:
var list = $('ul > li');
list.eq(parseInt(Math.random()*list.length)).addClass('selected');
谢谢大家:)
更新:
@MTCoster 有正确答案,这里是:
$("ul").each(function() {
var liArr = $(this).children("li");
$(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});
尝试使用 .each()
// select all `ul` elements
$("ul").each(function() {
// select all `li` elements that are children of `this` `ul`
var list = $("> li", this);
list.eq(Math.random() * list.length).addClass("selected");
})
您目前拥有的代码正在创建一个包含存在于 ul
元素中的所有 li
元素的单个数组,然后 selecting 其中一个。您需要做的是首先 select 所有 ul
元素,然后 select 来自 每个 的随机 li
元素。尝试这样的事情:
$("ul").each(function() {
var liArr = $(this).children("li");
$(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});
编辑: 您必须将数组中的 selected 元素包装在 jQuery select 或;我已经更新了代码以反映这一点。
<div id="question-1" name="question"
<ul>
<li name="347815" class="MULTIPLE" id="7548094" value="7548094">1</li>
<li name="347815" class="MULTIPLE" id="7548095" value="7548095">2</li>
<li name="347815" class="MULTIPLE" id="7548096" value="7548096">3</li>
<li name="347815" class="MULTIPLE" id="7548097" value="7548097">4</li>
</ul>
</div>
<div id="question-2" name="question"
<ul>
<li name="347818" class="MULTIPLE" id="7548140" value="7548140">1</li>
<li name="347818" class="MULTIPLE" id="7548143" value="7548143">2</li>
<li name="347818" class="MULTIPLE" id="7548168" value="7548168">Hemköp</li>
<li name="347818" class="MULTIPLE" id="7548169" value="7548169">3</li>
<li name="347818" class="MULTIPLE" id="7548184" value="7548184">4</li>
<li name="347818" class="MULTIPLE" id="7548195" value="7548195">5</li>
<li name="347818" class="MULTIPLE" id="7548208" value="7548208">6</li>
</ul>
</div>
我需要一个 js "jquery" 代码来 select 来自所有 ul 列表的随机 li 元素。列表编号不断变化,所以我需要使用类似 .find(); 的东西。
这是我没有的代码,但它不是 select 所有 ul 中的一个 li,它是 selects random li in random ul:
var list = $('ul > li');
list.eq(parseInt(Math.random()*list.length)).addClass('selected');
谢谢大家:)
更新:
@MTCoster 有正确答案,这里是:
$("ul").each(function() {
var liArr = $(this).children("li");
$(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});
尝试使用 .each()
// select all `ul` elements
$("ul").each(function() {
// select all `li` elements that are children of `this` `ul`
var list = $("> li", this);
list.eq(Math.random() * list.length).addClass("selected");
})
您目前拥有的代码正在创建一个包含存在于 ul
元素中的所有 li
元素的单个数组,然后 selecting 其中一个。您需要做的是首先 select 所有 ul
元素,然后 select 来自 每个 的随机 li
元素。尝试这样的事情:
$("ul").each(function() {
var liArr = $(this).children("li");
$(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});
编辑: 您必须将数组中的 selected 元素包装在 jQuery select 或;我已经更新了代码以反映这一点。