这两天在做项目的时候遇到这种在bootstrap框架中用CheckBox标签添加复选框无法选择的问题,所有整理了这篇笔记大家共同学习。
复选框无法选中可以给该复选框添加click事件
例:
function checkboxClick(scope) {
if ($(scope).is(":checked")) {
$(scope).prop("checked", true);
} else {
$(scope).prop("checked", false);
}
}
如果添加click事件依然没有选中,可能考虑是冒泡的原因,可以阻止冒泡
例:
function checkboxClick(event, scope) {
//阻止事件冒泡
event.stopPropagation();
if ($(scope).is(":checked")) {
$(scope).prop("checked", true);
} else {
$(scope).prop("checked", false);
}
}
##该方法同样适用于radio标签
jQuery中attr()和prop()方法的区别
prop(): 针对于HTML元素本身就带有的固有属性,
attr():针对于我们自己自定义的DOM属性。
例:
<input id="_hinge" type="checkbox" flag="test"/>
上例中,input元素的DOM属性有“id、type和flag”,很明显,前两个是固有属性,而后面一个“flag”属性是我们自己自定义上去的,input元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。
再例如:
<input type="checkbox" id="hinge1">
<input type="checkbox" id="hinge2" checked='checked'>
像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
$("#hinge1").attr("checked") == undefined
$("#hinge2").attr("checked") == "checked"
$("#hinge1").prop("checked") == false
$("#hinge2").prop("checked") == true