浅谈jquery中prop()和attr()

我们都知道,一般在jquery中设置属性时要用到attr()方法,现在我们有一个效果,点击按钮切换复选框的选中状态,下面贴出html代码:

 <input type="checkbox" id="check">
 <label>复选框</label>
 <input type="button" value="切换" id="btn">

js代码:

<script>
    $(function(){
         var flag=false;
         $("#btn").click(function(){
               if(flag==false){
                   $("#check").attr("checked",true);
                   flag=true;
               }else{
                   $("#check").removeAttr("checked");
                   flag=false;
               }
         });
     });
</script>

我们发现当点击按钮时,第一次点击时复选框会选中,第二次时点击复选框会取消选中,但以后再点击时复选框将不会有任何效果。更奇怪的是,打开调试工具,点击按钮时html代码中会有相应的checked="checked"代码段,但页面却没效果。

当我们用prop()方法替换attr()方法时,一切将变得正常:

  <script>
        $(function(){
            var flag=false;
            $("#btn").click(function(){
                if(flag==false){
                    $("#check").prop("checked",true);
                    flag=true;
                }else{
                    $("#check").removeAttr("checked");
                    flag=false;
                }
            });
        });
  </script>

这是为什么呢,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()的使用:

原文地址:http://www.jb51.net/article/41170.htm

时间: 2024-10-11 21:50:51

浅谈jquery中prop()和attr()的相关文章

jquery中prop和attr的区别

jquery中prop和attr的区别 prop: prop(name|properties|key,value|fn) **概述** 获取在匹配的元素集中的第一个元素的属性值. 随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误. jQuery第一次分配undefined值的属性,而忽略了浏览器生成的任何错误 **参数** name String V1.6 属性名称 properties Map V1.6 作为属性的"名/值对"对象 key,v

jquery中prop()和attr()的区别

在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有点模糊,举几个例子就知道了. <a href="http://www.baidu.com" target="_sel

第82天:jQuery中prop()和attr()的区别

在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有点模糊,举几个例子就知道了. <a href="http://www.baidu.com" target="_sel

jQuery中prop() 和 attr()的区别

prop() 和 attr() 可能返回不同的值,先看下面一段代码 <script> $(document).ready(function(){ $("button").click(function(){ $("input").attr('checked') //attr('checked'): checked 或 undefined $("input").prop('checked')); //prop('checked'): tr

浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异

本文结合W3School的文档,分析了jQuery中 wrap() wrapAll() 与 wrapInner()的差异,并给出了图文对比教程,非常的简单实用,有需要的朋友可以参考下 今晚看书的时候发现jQuery有三个包裹节点的方法,百度了一下jQuery wrap() / wrapAll() / wrapInner(),果然搜索结果 W3School的文档说明是排第一的. 可是,W3School的解释是这样的: jQuery 文档操作 - wrap() 方法 wrap() 方法把每个被选元素

浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式

前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能帮助到园友,文中如有不当之处,还望各位指正,话不多说,直接进入正题. bind() 简要描述 bind()向匹配元素添加一个或多个事件处理器. 使用方式 $(selector).bind(event,data,function) event:必需项:添加到元素的一个或多个事件,例如 click,db

jquery中prop()与attr()方法的区别

一.prop() 简单来说是当需要判断真假时使用,如复选框时: if( $(this).prop('checked')){ //当返回true时在这里调用 }else{ //当返回false时在这里调用 } TIPS:相关判断$(this).is(':checked')--这个用得酷点 二.attr() 简单来说当你要获得某个属性及其值时使用,如获得p标签的id时: $('p').attr('id'); 或将其设置id为pId时: $('p').attr('id','pId');

JQuery中prop和attr的区别,checked添加和删除

一.问题 $("#swIdInForm").removeAttr("checked"); $("#swIdInForm").attr("checked","true"); // 重新增加不起作用 在使用removeAttr()移除了radio的checked属性后,使用attr()重新增加不起作用: 二.解决 $("#swIdInForm").removeAttr("check

浅谈jquery中的ajax请求和跨域请求

ajax请求数据的代码: $(function () { $.ajax({ url:url,//请求文件所在的url type:"get",//请求的方式 success:function (data) { console.log(data);//返回的数据 } })})这样请求来的数据一般情况下都可以使用,但是有时候在从这个域名到另外一个域名请求数据时往往会出现所谓的跨域请求问题, 浏览器均默认开启了同源策略,它指Ajax请求所在的页面和被请求的页面在协议.域名.端口均相同才能被访问