0

我有以下功能:

$(".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 中,将 div 变为红色。正如在这个小提琴中看到的,它有效。我想将这个someClass类随机添加到同一个类的最多 2 个 div 中。

示例(ps:div类的顺序是随机生成的,不限于A、B、C、D。这个顺序和fiddle中的类名只是一个例子):

我们有 A、B、C、A、C、D、A。

我希望随机 2 个具有相同类的 div 变为红色,所以:

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

如果这很复杂,我也会满足于第一个找到的匹配项。所以:

  1. A和(第二个)A是红色的

希望有人能帮忙,谢谢!

4

1 回答 1

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');
于 2013-04-22T19:15:35.433 回答