2014-01-12 209 views
0

我是jquery的新手,我試圖執行以下操作:將類添加到多個元素

我有多個div實例。爲每個實例我隨機添加一個類(用於更改某些屬性)。添加的類將從列表中獲取。

這很好 - 但現在我試圖另外添加相同(隨機)類到以前的孩子div。

我的HTML是:

<div class="random"> 
    <div class="alsorandom"> </div> 
</div> 

<div class="random"> 
    <div class="alsorandom"> </div> 
</div> 

這裏是我當前的jQuery(隨機化發生,使得2類決不互相後加入):

var classes = ['blue', 'yellow', 'lightorange', 'violet', 'green']; 
var prevClass = ""; 
$('.randomcolor').each(function() { 
    var classes2 = []; 
    for (var i = 0; i < classes.length; i++) { 
     if (classes[i] !== prevClass) { 
      classes2.push(classes[i]); 
     } 
    } 
    $(this).addClass(prevClass = classes2[Math.floor(Math.random()*classes2.length)]); 
}); 

,下面我試圖和它不起作用:

$('.randomcolor, .alsorandom').each(function() { ... 

我會親切的任何幫助。謝謝。

+0

所謂的工作示例什麼都不做> http://jsfiddle.net/vYL55/ – BenM

+0

其中是'.randomcolor'元素?沒有這個班,這將無法工作。 – jackJoe

回答

1

如果你知道其它的元素是第一要素的直系後裔,您可以使用.children()方法得到它。就像這樣:

prevClass = classes2[Math.floor(Math.random()*classes2.length)]; 
$(this).addClass(prevClass).children('.alsorandom').addClass(prevClass); 

整個代碼應該是這樣的:

var classes = ['blue', 'yellow', 'lightorange', 'violet', 'green']; 
var prevClass = ""; 
$('.randomcolor').each(function() { 
    var classes2 = []; 
    for (var i = 0; i < classes.length; i++) { 
     if (classes[i] !== prevClass) { 
      classes2.push(classes[i]); 
     } 
    } 
    prevClass = classes2[Math.floor(Math.random()*classes2.length)]; 
    $(this).addClass(prevClass).children('.alsorandom').addClass(prevClass); 
}); 

如果附加元素的後代,但不一定是直接後代,然後用而不是.children()方法.find()方法。

+0

perfekt!謝謝! – benniy

0

看到你的HTML,而不是這樣的:

$('.randomcolor, .alsorandom') 

做到這一點:

$('.random, .alsorandom') 

演示在這裏:http://jsfiddle.net/edgarinvillegas/vYL55/2/

乾杯

+0

我在示例中放下了錯誤的類。對不起,這不起作用。 – benniy

0

您可以使用jQuery。每次做這個()像這樣:

var classes = ["blue", "red", "green"]; 

$(".random").each(function(){ 
    var $this = $(this); 
    var classIndex = Math.floor(Math.random()*(classes.length)); 
    alert(classIndex); 
    $this.addClass(classes[classIndex]); 
}); 

看一看這個fiddle從一個工作示例

+0

恩,我沒有得到 - 對不起。我看到警報和我之前的2個隨機添加類的功能不會在彼此不再工作後出現。 – benniy