只是一个简单的问题.
我正在使用
console.log(jQuery(event.target).is(":checked"));
Run Code Online (Sandbox Code Playgroud)
并且每次都返回false.
如果我这样做console.log(jQuery(event.target))是打印出输入框,所以我知道event.target是正确的.
我不能this在这里使用,因为jQuery事件绑定到父div.
任何想法为什么这不起作用?看起来很简单.
编辑#########################################其余代码:
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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
而html看起来像:
<div class="core-create-install-pkg-parent">
<div class="core-create-install-pkg-title">
<input type="checkbox" value="" checked>
plugins
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 18
不需要jQuery:
event.target.checked
Run Code Online (Sandbox Code Playgroud)
如果event.target是一个复选框应该工作.但是,你的代码应该也可以正常工作......如果没有,那么元素不是复选框或其他错误.
剪切此代码的问题是您在切换后立即恢复控件.
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
}
Run Code Online (Sandbox Code Playgroud)
另外我会推荐jquery的prop方法来测试checked状态(返回true或false).[需要jQuery 1.6)
($(event.target).prop("checked")
($(event.target).prop("checked", true)
Run Code Online (Sandbox Code Playgroud)