我有以下功能:
$(".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");
}
});
它为具有相同类的div添加了一个类(.someClass
),将div变为红色。如this fiddle所示,它有效。我想将此someClass
类随机添加到具有相同类的最多2个div。
示例(ps:div类的顺序是随机生成的,它们不仅限于A,B,C和D.这个小提琴中的顺序和类名只是一个例子):
我们有A,B,C,A,C,D,A。
我想要随机的2个div,同一个班级变成红色,所以:
如果这非常复杂,我也会满足于第一次找到的比赛。所以:
希望有人能提供帮助,谢谢!
答案 0 :(得分: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');