假设我有 50 个 div ID
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div> and ... upto <div id="div50"></div>
这些 div 是具有足够宽度 x 高度来填充背景颜色的框。
还有另一个 div 以字符串形式检索数据库数据。它正在被正则表达式编辑以匹配 div ID 并适合 jQuery 选择器
<div id="bookcaldatesci"></div>
上面 div 中的字符串 (innerHTML) 声明了一组 div。因此字符串 (innerHTML) 可能如下所示:
#div1,#div2,#div3,#div1
如果该 div 被多次引用,我想更改该 div 的颜色。所以div1的颜色会改变。
问题是 jquery.each() 忽略了 each() 上的第二个 div1
我目前的代码是
$(bookcaldatesci.innerHTML).each(function(i){
var indicator1 = $(this).css('background-color');
if (indicator1 == 'rgb(0, 0, 255)') {
$(this).css({ 'background-color': 'rgb(255, 165, 0)' });
}
else if (indicator1 != 'rgb(255, 165, 0)') {
$(this).css({ 'background-color': 'rgb(0, 0, 255)';
}
});
总之,如果 div1 已经是蓝色,则将其设为橙色作为警告。如果它不是蓝色的,就让它变成蓝色。
我查明了问题 - 我设法为 .each() 的结果返回了一个字符串,然后了解到第二个 div1 在通过 .each() 时丢失了我正在寻找一种避免这种情况的方法。所以 jQuery 忽略了我的第二个 #div1 并且他运行 .each() 命令为
#div1,#div2,#div3
删除最后一个 div1。这是我通过 .each() 测试时返回的字符串。
我有什么办法不放弃最后一个 div1?
编辑-问题:第一次迭代已经运行,为什么要运行第二次迭代?
答:如果存在,我也需要它来运行第二次迭代。因此,如果有第二次迭代,我需要它来改变颜色(所以它会警告我)。这个字符串来自一个关于预订的自动化数据库。如果有重叠,应警告管理员。我使用正则表达式构建了字符串,因此该字符串与 id 列表相同,因此我可以在 jQuery 选择器中获取它。