2014-01-12 168 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