计算jQuery中包含指定类的同级(当前元素右侧)数
我正在研究囚犯问题的一个例子 基本上,7名囚犯排成一行,随机戴上黑色或白色的帽子。最高的人在后面,可以看到前面所有其他人的帽子 每个人都必须猜出他们帽子的颜色,但囚犯们不能相互说话,他们只能说黑色或白色 解决办法是让坐在后面的囚犯说黑或白,这完全取决于他的视线中是否有等量的黑帽子。若数字是奇数,他将猜出白色,以此类推,直到所有囚犯都完成为止 我可以一个接一个地重复每一顶帽子,但我的主要问题是弄清楚现在的囚犯如何才能只穿过前面的帽子,并且只根据他们视线中的内容,以及数量是奇数还是偶数,说出黑/白 我想这个谜题的主要部分是决定如何获得所有的答案 当前同级类右侧的同级,并获取 运行blackHat类的所有帽子总数计算jQuery中包含指定类的同级(当前元素右侧)数,jquery,Jquery,我正在研究囚犯问题的一个例子 基本上,7名囚犯排成一行,随机戴上黑色或白色的帽子。最高的人在后面,可以看到前面所有其他人的帽子 每个人都必须猜出他们帽子的颜色,但囚犯们不能相互说话,他们只能说黑色或白色 解决办法是让坐在后面的囚犯说黑或白,这完全取决于他的视线中是否有等量的黑帽子。若数字是奇数,他将猜出白色,以此类推,直到所有囚犯都完成为止 我可以一个接一个地重复每一顶帽子,但我的主要问题是弄清楚现在的囚犯如何才能只穿过前面的帽子,并且只根据他们视线中的内容,以及数量是奇数还是偶数,说出黑/白
var total偶数=0;
//对于每个元素
$(“#list li”)。每个(函数(){
//设置范围以从数组中获取随机值
var range=Math.round(Math.random()*1);
//hat类数组
var randomHat=[“白帽子”、“黑帽子”];
//向每个 元素添加随机类
$(this.addClass(randomHat[range]);
});
//元素更新后
$(“#list li”)。每个(函数(){
//获取当前选定li的索引
var isEven=getif偶($(此));
//附加结果
$(“#resultslist”)。追加(“ ”+isEven+” ”;
});
函数getif偶(currentHat)
{
//这是主要问题
var totalBlackHats=$(currentHat).sides().hasClass(“blackHat”).length;
//这将返回未定义的
控制台日志(totalBlackHats);
//确定是否为奇数/偶数
如果(总黑帽%2)
返回true;
其他的
返回false;
}
.whiteHat{
背景:白色;
}
黑帽先生{
背景:黑色;
}
.帽子{
高度:自动;
边框:1px纯黑;
保证金:5px;
颜色:红色;
填充物:5px;
文本对齐:居中;
}
.集装箱{
边框:1px纯黑;
宽度:48%;
浮动:左;
保证金:3倍;
}
.结果{
高度:自动;
边框:1px纯黑;
保证金:5px;
填充物:5px;
}
ol{
列表样式类型:无;
保证金:0;
填充:0;
}
第一顶帽子
第二顶帽子
第三顶帽子
第四顶帽子
第五顶帽子
第六顶帽子
第七顶帽子
var total偶数=0;
//对于每个元素
$(“#list li”)。每个(函数(){
//设置范围以从数组中获取随机值
var range=Math.round(Math.random()*1);
//hat类数组
var randomHat=[“白帽子”、“黑帽子”];
//向每个 元素添加随机类
$(this.addClass(randomHat[range]);
});
//元素更新后
$(“#list li”)。每个(函数(){
//获取当前选定li的索引
var isEven=getif偶($(此));
//附加结果
$(“#resultslist”)。追加(“ ”+isEven+” ”;
});
函数getif偶(currentHat)
{
//这是主要问题
var totalBlackHats=$(currentHat.sibbines().filter(“.blackHat”).length;
//这将返回未定义的
控制台日志(totalBlackHats);
//确定是否为奇数/偶数
如果(总黑帽%2)
返回true;
其他的
返回false;
}
.whiteHat{
背景:白色;
}
黑帽先生{
背景:黑色;
}
.帽子{
高度:自动;
边框:1px纯黑;
保证金:5px;
颜色:红色;
填充物:5px;
文本对齐:居中;
}
.集装箱{
边框:1px纯黑;
宽度:48%;
浮动:左;
保证金:3倍;
}
.结果{
高度:自动;
边框:1px纯黑;
保证金:5px;
填充物:5px;
}
ol{
列表样式类型:无;
保证金:0;
填充:0;
}
第一顶帽子
第二顶帽子
第三顶帽子
第四顶帽子
第五顶帽子
第六顶帽子
第七顶帽子
使用过滤器而不是hasClass。hasClass返回一个布尔值。如果您只需要布尔值,也可以删除.length。感谢filter()的建议,它似乎起到了作用。我还将sides()替换为nextAll(),以便只获取current@MasterYoda令人惊叹的。