只是一个简单的问题。
我正在使用
console.log(jQuery(event.target).is(":checked"));
并且每次都返回false。
如果我这样做,console.log(jQuery(event.target))
打印出输入框,所以我知道event.target是正确的。
我不能在这里使用this
,因为jQuery事件绑定到父div。
为什么这不起作用的任何想法?似乎很容易。
EDIT ######################################### 其余代码:
jQuery(".core-create-install-pkg-parent").live("click", function(event){
var cls = jQuery(event.target).attr("type");
if(cls != "checkbox"){
event.stopPropagation();
jQuery(".core-create-install-pkg-child:first", this).toggle();
}else{
console.log(event.target);
if(jQuery(event.target).is(":checked")){
console.log("it's checked");
jQuery("input[type=checkbox]", this).removeAttr('checked');
}else{
console.log("not checked");
jQuery("input[type=checkbox]", this).attr("checked", true);
}
}
});
html看起来像:
<div class="core-create-install-pkg-parent">
<div class="core-create-install-pkg-title">
<input type="checkbox" value="" checked>
plugins
</div>
</div>
答案 0 :(得分:15)
不需要jQuery:
event.target.checked
如果event.target
是复选框,则应该有效。但是,你的代码应该也可以正常工作......如果没有,那么元素不是复选框,也不是其他错误。
答案 1 :(得分:7)
此代码剪切的问题是您在切换后立即恢复控件。
if (jQuery(event.target).is(":checked")) { //Enters if the checkbox is checked
console.log("it's checked");
jQuery("input[type=checkbox]", this).removeAttr('checked'); //Removes the checked attribute, effectively unchecking it
} else { //Enters if the checkbox is Unchecked
console.log("not checked");
jQuery("input[type=checkbox]", this).attr("checked", true); //Sets the checked attribute, checkbox becomes checked again
}
我还建议使用jquery的prop方法来测试checked状态(返回true或false)。 [需要jQuery 1.6)
($(event.target).prop("checked")
($(event.target).prop("checked", true)