在有些查询传值问题时需要勾选,有些人一直问为什么不用rediobutton,而用checkbox,这是为了解决,不选择时,传空,而查询时,rediobutton是必须选择一个的,我们需要传空值,而不要必须传默认值
1.html
<div style="margin-bottom: 20px;margin-top: 20px">
<form action="" method="post">
<div class="input-append">
<label class="checkbox inline">
<input type="checkbox" value="1"> 按天 </label>
<label class="checkbox inline">
<input type="checkbox" value="2">按月
</label>
<label class="checkbox inline">
<input type="checkbox" value="3"> 按年
</label>
<input type="text" class="span2 search-query" placeholder="商品名称">
<button type="submit" class="btn btn-info">搜索</button>
</div>
</form>
</div>
2.js
(":checkbox").click(function(){(":checkbox").removeAttr("checked");
(this).prop(′checked′,true);alert(
(this).val());
});
3.如果用attr(‘checked’,true) 时会出现没有勾选框的情况,这是因为
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。
关于它们两个的区别,网上的答案很多,其实很简单:
对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
举个栗子:
栗子中,a元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,a元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。
现在再说说我们之前那个栗子,也就是checkbox的问题。
像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
而如果使用attr:
(“#test_check1”).attr(“checked”) == undefined(“#test_check2”).attr(“checked”) == “checked”
而如果使用prop,则正常:
(“#test_check1”).prop(“checked”) == false(“#test_check2”).prop(“checked”) == true
所以归根到底就是attr和prop的区别。