我在不同的标签中有两个表单,每个交叉字段的值都与onchange / keyup上的另一个表单重复。
当我的复选框更改时,还会更改背景图像以突出显示选择,由于某种原因我无法弄清楚原因,但是当复选框打开时,它们不会再次关闭。
jsfiddle链接> http://jsfiddle.net/UMwkV/
HTML
<fieldset class="fieldset-form left">
<label>Flammable</label>
<div class="clear"></div>
<div class="flammable"></div>
<input type="checkbox" id="flammable" class="flamcheck" name="flammable" value="1" style="width:12px; height:12px; margin:0 auto; display:block; margin-top:5;">
</fieldset>
<fieldset class="fieldset-form left">
<label>Flammable</label>
<div class="clear"></div>
<div class="flammable"></div>
<input type="checkbox" id="flammable" class="flamcheck" name="flammable" value="1" style="width:12px; height:12px; margin:0 auto; display:block; margin-top:5;">
</fieldset>
的jQuery
$("input[name=flammable]").change(function() {
if ($('.flamcheck').is(":checked")) {
$('.flammable').css("backgroundColor", "url(images/flame-on.png)");
$('.flamcheck').prop("checked", true);
}
if (!$('.flamcheck').is(":checked")) {
$('.flammable').css("backgroundImage", "url(images/flammable.png)");
$('.flamcheck').prop("checked", false);
}
})
如果有人能指出我错过的显而易见的事情,我将不胜感激。
答案 0 :(得分:2)
使用
$(this).is(":checked")
代替
$。是()当至少一个元素与选择器匹配时返回true。一旦检查了两个框,当您再次单击一个框时,另一个复选框仍将被选中,因此当您在两个复选框上运行时,()总是返回true。
答案 1 :(得分:1)
AFAIK .is(':checked')
针对DOM运行,因为它是通过网络呈现的,而不是当前的实时DOM。
所以解决方案是使用.prop('checked')
代替
版本2允许独立检查:
版本3导致相互更新,两个复选框都是可点击的:
答案 2 :(得分:0)
我想出了这个问题。这段代码可以正常使用
$(".flamcheck").change(function() {
if ($(this).prop("checked") == true ) {
$('.flammable').css("backgroundColor", "url(images/flame-on.png)");
$('.flamcheck').prop("checked", true);
}
if ($(this).prop("checked") == false) {
$('.flammable').css("backgroundImage", "url(images/flammable.png)");
$('.flamcheck').prop("checked", false);
}
});
答案 3 :(得分:0)
检查此工作demo
您的代码有语法错误我已更正它请检查小提琴