2019年4月24日

使用Jquery1.9 版本来实现全选


关于复选框或者单选框的全选反选问题,是日常的前端开发中就经常会遇到,特别是切图网这样的前端外包输出的公司,全选本身问题不难,通过jquery手写就可以很轻松搞定,下面介绍jquery方式手写的全选。

在使用Jquery实现全选以及反选的时候, 使用attr()实现的时候,在浏览器第一次运行可以全选,但是第二次再全选,不管用。

 通过查找资料,用 prop()方法代替attr()方法就行了。

注意:

Jquery 1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性.

在遇到要获取或设置checked,selected,readonly和disabled等属性时,用prop方法.

jquery1.6中新加了一个方法prop(),官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。

大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = “disabled”,checked=”checked”,比如用attr(“checked”)获取checkbox的checked属性时选中的时候可以取到值,值为”checked”但没选中获取值就是undefined。

jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回”checked”和””,现在使用prop方法获取属性则统一返回true和false。

那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();

以下是官方建议attr(),prop()的使用:

以下是实现全选以及反选的Html代码,要引用Jquery脚本。Jquery1.6以上都行

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="jquery-1.9.1.js"></script>
</head>
<body>
<input type="checkbox" value="全选" id="cbAll" name="cbArea">全选<br/>
<input type="checkbox" value="洛龙区" name="a">洛龙区
<input type="checkbox" value="涧西区" name="a">涧西区
<input type="checkbox" value="吉利区" name="a">吉利区
<input type="checkbox" value="西工区" name="a">西工区
<input type="checkbox" value="宜阳县" name="a">宜阳县
<input type="checkbox" value="老城区" name="a">老城区
<input type="checkbox" value="回族区" name="a">回族区
<input type="checkbox" value="偃师" name="a">偃师
<input type="checkbox" value="哈哈区" name="a">哈哈区
<input type="checkbox" value="洛宁区" name="a">洛宁区

</body>
</html>


<script type="text/javascript">
    $(function () {
        $("#cbAll").click(function () {
            if($("#cbAll").is(":checked")) {
                $(":checkbox").prop("checked",true);
            }
            else {
                $(":checkbox").prop("checked", false);
            }

        });

        $(":checkbox").click(function () {
            if (!$(this).is(":checked")) {
                $("#cbAll").prop("checked", false);
            }

        });
    })
</script>

微信扫一扫二维码访问


16年前端经验
加微信好友直接沟通
了解《我的十年》