对checkbox 的checked的一些总结

在做一个jquery树形结构的复选框选择的效果。

遇到的问题:

1.jquery复选框判断是否被选中

$(check).attr("checked"),可能提示为undefied;

  正确的做法是:$(check).prop("check");或者:$(check).is(":checked");

2.谷歌(firefox可能也有)中checkbox属性checked="checked"已有,但复选框却不显示打钩。

  上网查了下说是jquery版本的问题,如果jquery版本是1.9的话,就存在一个兼容性和稳定性的问题。在1.6+的版本中要用prop,尤其是checkbox的checked属性。

  正确的写法是:$(check).prop("checked",false);$(check).prop("checked",true);

另:下面的代码即实现树形结构的复选框任意选的问题。点击复选框时用的是change事件进行监听。

 //点击树形结构的checkbox。
        var check = "input[type = ‘checkbox‘]";
        $(function () {
            $("#browser").find(check).change(function () {

                if ($(this).is(":checked"))
                    $(this).parent().find(check).prop("checked", true);//this下边的所有的checkbox都当选。
                else {
                    $(this).parent().find(check).removeAttr("checked");
                }
                if (! $(this).parent().siblings().children(check).is(":checked")) //如果this兄弟节点没有选中的话,执行循环。
                    {
                    checkRound($(this), this);
                }
            })
        })
        function checkRound(roundElement){
            var parentElement=$(roundElement).parent().parent();  //获取当前元素的祖父元素ul。
            if (parentElement.attr("id") != "browser") {
                if (parentElement.parent().children(check).is(":checked"))
                    parentElement.parent().children(check).removeAttr("checked");
                else {
                    parentElement.parent().children(check).prop("checked", true);//jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断
                }
            }
            else{
                return false;
            }
            checkRound(parentElement);
        }

  

时间: 2024-11-07 22:23:53

对checkbox 的checked的一些总结的相关文章

点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态

给tr添加点击事件,使用find方法查找tr下的所有层级的元素,children只查找下一层级的元素,所以使用find.find的返回值为jquery对象,在这个项目中不知道为什么使用jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态,所以我就把jquery对象转换为DOM对象,怎么转呢?jquery对象[0]或者get(0)就转换成DOM对象,然后直接.checked返回true或false就可以判断checkbox是否选中了.然后判断状

checkbox的checked属性问题

在设置checked时,如 $("#checkbox").attr("checked",true); 页面显示checked属性已添加,但是未被选中(没打勾), 在如下代码中没有问题: function tree_item_checked(cl,type){     if($("#item_"+cl).is(":checked")) {         $("input[key='tree_item_checkbox

firefox中 checkbox属性checked="checked"已有,但复选框却不显示打钩的原因

最近在调试复选框的应用,在ie没有问题,考虑到兼容性,试试了firefox,遇到了问题. 复选框绑定了click事件,点一次选中,再点击取消选中,依次类推.这个功能在ie中没问题,但是在firefox中测试的时候,前两次都没有问题,可以正常显示选中和取消,但当再去选中的时候,复选框的属性checkbox值变为"checked",没问题,但是复选框却不在显示选中状态,明明属性值改了,但是却不显示勾选,太诡异了.代码修改了却得不到正确的显示状态,纠结了很久,找不到原因. 正解:后来经偶像指

jQuery——操作复选框(checkbox) attr checked不起作用

这天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 attr('checked','checked');与attr('checked',true); 都不好使,要么第一次成功了,第二次调用就没反应,完全不起作用了.那到底是什么原因呢? 害得'跑客教授'到处到网上搜 jQuery checkbox的操作,动态选择的相关文章,都写着是这样的实现代码 $('input[type=checkbox]').attr('checked','checked');//全选,设置属性

checkbox属性checked="checked"已有,但却不显示打勾的解决办法

checkbox属性checked="checked"已有,但却不显示打勾的解决办法 #### 查阅其他网站  发现主要是因为Jquery的版本问题 1.attr(): 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性. 在jQuery 1.6中,当属性没有被设置时候,.attr()方法将返回undefined.若要检索和更改DOM属性,比如元素的checked, selected, 或 disabled状态,请使用.prop()方法. 2.remov

jQuery 操作复选框(checkbox) attr checked不起作用

jQuery 更改checkbox的状态,无效 $(this).attr("checked", false).checkboxradio("refresh");     //应该这么写吧,少了$这个东东~~~跟js混淆了 jQuery 操作复选框(checkbox) attr checked不起作用 这 天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 attr(‘checked’,'checked’);与attr(‘checked’,t

Input类型是checkbox时checked属性获取

记录一下checkbox 的 checked 属性的获取办法,以备忘记: 假如你的一个HTML页中有这么一段代码: <input name="chbRem" id="chbRem" type="checkbox" checked="checked"> 那么如何通过JQuery获得chbRem的checked状态呢: 错误的写法如下: alert(  $("#chbRem").attr("

$(‘#checkbox‘).attr(‘checked‘); 返回值有误

$('#checkbox').attr('checked'); 返回的是checked或者是undefined,不是true和false 解决办法如下: $("#cb").attr("tagName"); //undefined    $("#cb").prop("tagName"); //INPUT

$(&#39;#checkbox&#39;).attr(&#39;checked&#39;); 返回的是checked或者是undefined解决办法

$('#checkbox').attr('checked'); 返回的是checked或者是undefined解决办法 <input type='checkbox' id='cb'/> <script> //获取是否选中 var isChecked = $('#cb').attr('checked'); //设置选中 $('#cb').attr('checked',true); </script> 这样写在Jquery1.6之前完全没问题,可是当我们升级1.6到更高的版

checkbox之checked的方法(attr和prop)区别

1. $('#checkbox').click(function(){ if($('#checkbox').is(':checked')) { $(".sendmailhui").hide(); $(".sendmail").show(); }else{ $(".sendmailhui").show(); $(".sendmail").hide(); } }) 2. $("#chk").bind("