计算jQuery中包含指定类的同级(当前元素右侧)数

计算jQuery中包含指定类的同级(当前元素右侧)数,jquery,Jquery,我正在研究囚犯问题的一个例子 基本上,7名囚犯排成一行,随机戴上黑色或白色的帽子。最高的人在后面,可以看到前面所有其他人的帽子 每个人都必须猜出他们帽子的颜色,但囚犯们不能相互说话,他们只能说黑色或白色 解决办法是让坐在后面的囚犯说黑或白,这完全取决于他的视线中是否有等量的黑帽子。若数字是奇数,他将猜出白色,以此类推,直到所有囚犯都完成为止 我可以一个接一个地重复每一顶帽子,但我的主要问题是弄清楚现在的囚犯如何才能只穿过前面的帽子,并且只根据他们视线中的内容,以及数量是奇数还是偶数,说出黑/白

我正在研究囚犯问题的一个例子

基本上,7名囚犯排成一行,随机戴上黑色或白色的帽子。最高的人在后面,可以看到前面所有其他人的帽子

每个人都必须猜出他们帽子的颜色,但囚犯们不能相互说话,他们只能说黑色或白色

解决办法是让坐在后面的囚犯说黑或白,这完全取决于他的视线中是否有等量的黑帽子。若数字是奇数,他将猜出白色,以此类推,直到所有囚犯都完成为止

我可以一个接一个地重复每一顶帽子,但我的主要问题是弄清楚现在的囚犯如何才能只穿过前面的帽子,并且只根据他们视线中的内容,以及数量是奇数还是偶数,说出黑/白

我想这个谜题的主要部分是决定如何获得所有的答案 当前同级类右侧的同级,并获取 运行blackHat类的所有帽子总数

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令人惊叹的。