2013-04-22 23 views
0

我有以下功能:与同一类应用addClass(PREF随机)至最多2个的div,而不是对所有具有相同类

$(".schedule").each(function() { 
    var cls = this.className.match(/schedule-\d+/); 
    if (cls.length === 0) return; 

    var els = $(".schedule." + cls); 
    if (els.not(this).length > 0) { 
     els.addClass("someClass");   
    } 
}); 

它增加了一个类(.someClass),以具有相同的div上课,把红色变成红色。如在this fiddle中看到的那样,它可以工作。我想将这个someClass类随机添加到同一个类的最多2个div。

实施例(PS:在div类的顺序是随机生成的,并且它们不限于只是A,B,C和D这在小提琴顺序和类名是只是一个例子):

我们有A,B,C,A,C,d,A.

我想随机2周的div用相同的类变成红色这样:

  1. A和(第二)A是红色或
  2. A和(第三)A是红色的或
  3. (二)A和(三)A是红色或
  4. C和C是红色

如果这是很复杂的,我会满足于第一个找到了。所以:

  1. A和(二)A是红色

希望有人能帮助,谢谢!

+0

可能重复链接不谈论随机选择,但不是由NR限制呢? – Maurice 2013-04-23 06:06:33

回答

1

A和(第二)A可以选择使用:

$('.a:eq(0), .a:eq(1)').addClass('someClass'); 

A和(第三)A将是:

$('.a:eq(0), .a:eq(2)').addClass('someClass'); 

类似地,可以得到其它组合以及。这是假定组合的总数是你在问题中指定的。


好,选择一个给定的类操作上的2个随机元素,你可以这样做:

// total number of elements with class (.A, .B, .C etc.) 
var n = $('.yourClass').length; 

// get 2 indices randomly 
var ids = []; 
while(ids.length < 2) { 
    var r = Math.floor(Math.random() * n); 
    if(ids.indexOf(r) == -1) { 
     ids.push(r); 
    } 
} 

// select the 2 elements picked randomly 
var sel = $('.yourClass:eq('+ids[0]+'), .yourClass:eq('+ids[1]+')'); 

// apply the class 
sel.addClass('someClass'); 
+0

_I'd喜欢将这个someClass类**随机**添加到最多2个divs_ – Andreas 2013-04-22 19:23:02

+0

确实或找到第一个找到的匹配项。此外,这些类不固定(也不按名称排列)。尽管如此,谢谢你试图帮助! – Maurice 2013-04-23 06:09:27

+0

@Maurice - 查看我的编辑。添加了一些逻辑来帮助您获得所需的内容。 – techfoobar 2013-04-23 06:30:51

相关问题