在所有的ul中将类添加到随机li中

时间:2015-10-21 18:28:17

标签: javascript jquery html css survey

<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&#34; jquery&#34;用于从所有ul列表中选择随机li元素的代码。列表编号不断变化所以我需要使用像.find();

这是我没有的代码,但它并没有在所有ul中选择一个li,它在随机的ul中选择随机的li:

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'); });

2 个答案:

答案 0 :(得分:3)

尝试使用.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");
   })

答案 1 :(得分:2)

您目前拥有的代码是创建li元素中存在的所有ul元素的单个数组,然后选择其中一个元素。您需要做的是首先选择所有ul元素,然后从每个中选择一个随机li元素。尝试这样的事情:

$("ul").each(function() {
  var liArr = $(this).children("li");
  $(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});

编辑:你必须在jQuery选择器中包装数组中的选定元素;我已更新代码以反映这一点。