2015-02-03 4 views
0

мой вопрос прост, предположим, что у меня есть 10 дивы:Выберите 2 случайных дивы с тем же классом JQuery

<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 
<div class="someDiv"></div> 

И я хочу, чтобы, когда я нажимаю «Foo» только 2 из дивы изменить свой фон на красный , Как я могу достичь этого с помощью чего-то вроде Math.random от js?

+0

Wheres 'Foo' там? это кнопка? – roullie

+0

не имеет значения, '$ ('. Foo'). Click (function() {});' any – mrpinkman

+0

попробуйте это: http://stackoverflow.com/a/11186765/2000051 –

ответ

2

Попробуйте - Использование Math.Random и parseInt

Working Demo Here

$(document).ready(function(){ 
    var r1 = (Math.random()*10); 
    var r2 = (Math.random()*10); 
    if(parseInt(r1)==parseInt(r2)) // IF BOTH ARE SAME 
    { 
     if(parseInt(r1)==10) 
     { 
      r2=r2-1; 
     } 
     else 
     { 
      r2=r2+1; 
     } 
    } 
    var allDiv = $('.someDiv');  
    $(allDiv[parseInt(r1)]).css({'background':'red'}); 
    $(allDiv[parseInt(r2)]).css({'background':'red'}); 
}); 
+0

Это сработало, спасибо !!! – mrpinkman

+0

Рад помочь вам :), пожалуйста, «примите» ответ, который поможет другим найти правильное решение. – prog1011

+0

сделано, спасибо большое – mrpinkman

1

Try This

UPDATE:

$(document).ready(function(){ 
    $('.foo').click(function(){ 
     var rand1 = Math.floor((Math.random() * 10) + 1); 
     var rand2 = Math.floor((Math.random() * 10) + 1); 
     var a = document.getElementsByClassName('someDiv')[rand1]; 
     var b = document.getElementsByClassName('someDiv')[rand2]; 
     a.css('background','red'); 
     b.css('background','red'); 
    }); 
}); 
+0

не работает Не знаю почему – mrpinkman

+0

обновлено, сейчас, это было 'getElementsByClassName' –

2

Обобщенный подход к указанному количеству элементов для изменения.
просто измените var numOfDivToChange=2;, чтобы применить эффект к большему количеству элементов.

$(document).ready(function(){ 
    var numOfDivToChange=2; 
    $('.foo').click(function(){ 


     //get all similar elements array 
     var allFoos = document.getElementsByClassName('someDiv'); 

     //sanity check 
     if(numOfDivToChange>allFoos) 
      return false; 

     for(var i=0;i<numOfDivToChange;i++) 
     { 
      //generate a random index 
      var randIndex = Math.floor((Math.random() * allFoos.length) + 1); 

      //set the css changes you want 
      allFoos[randIndex].css('background','red'); 
     } 
    }); 
}); 
Смежные вопросы