关于jquery里面prop和attr的带示例详细对比,深度理解

以前经常把attr和prop搞混,由于它们在许多场景用法其实是一样的,因此也没有出现大的差错。直到最近,写项目被一个bug困扰很久,才意识到attr和prop的区别。

这里整理一下异同点。

这里我写了一个简单的demo设置了一些不同的属性在div上

<style>
        .hes{
            height: 200px;
        }
        .left{
            float: left;
        }
    </style>
</head>
<body>
<div id="no1" data-person="小明" data-id="testA" style="display: inline-block;border: 1px solid #ddd;" class="hes left">text</div>
</body>
大家看到了 这个div上有我设置的各种属性,下面我把它放到浏览器上执行一下。

先对比class

 

这里可以看到class 两个属性获取的是完全一样的。


接着对比 data-person和data-id


这里我们就可以发现,prop在获取元素自定义属性的时候获取不到了,但是attr能够获取到。


接下来对比style




很明显attr只是获取属性等号后面的值,而prop则是深度全面的获取style在这个标签上的详细信息,但是并不包括前置style表中通过.hes 和 .left 赋予的style属性。

我们可以看到,虽然在前置style里设置了

<style>
        .hes{
            height: 200px;
        }
        .left{
            float: left;
        }
    </style>
但是我们我们再console里看到的依然是



当我们对比attr无法获取的属性时,我们用另一个例子来比较

<input id="check1" type="checkbox" checked>
<input id="check2" type="checkbox">



这里就可以发现 在这 当标签中没有checked 属性时attr 是获取不到的,而当有checked属性时 attr获取的值是“checked”而非true,其实等同于checked="checked"获取到的值。

而prop则是全部都按照true和false来判断


经过上述这些,我们来个总结会发现

prop获取到的是标签的固有属性,本身就有的属性,并且获取到的信息更深层次,例如:checked和style为例。

attr获取到的是标签定义属性(注意:固有属性只要在标签中写了,也算是被定义可当做定义属性),获取到的值一般是等号后面所对应的值,更为直观。即使没有等号,入checked这种情况,也默认为checked="checked"

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值