2 回答

TA贡献1906条经验 获得超3个赞
input 在hidemore中的,你点击了hidemore会让input 也点击了的,你应该把input 冒泡的排除出去
检测方法:
$(".hidemore").click(function (e) {
var checked = $(this).find("input").is(':checked');
if(event.target.nodeName==="INPUT"){
console.log(event.target.checked); //true
};
if (checked === false) {
$(this).find("input").prop("checked", true);
} else if (checked === true) {
$(this).find("input").prop("checked",false);
}
console.log(event.target.checked); //false
});
可见input改变了两次
js
var span = document.getElementsByClassName('hidemore')[0];
var inp = span.getElementsByTagName('input')[0];
span.onclick=function(e){
if(e.target.nodeName==='INPUT'){
return;
}else{
inp.checked = !inp.checked;
}
}
jq
$(".hidemore").click(function (event) {
var checked = $(this).find("input").is(':checked');
if(event.target.nodeName==="INPUT")return;
if (checked === false) {
$(this).find("input").prop("checked", true);
} else{
$(this).find("input").prop("checked",false);
}
});
添加回答
举报