jQuery.prop() 使用详解

 更新时间:2015年07月19日 15:55:24   投稿:hebedich  
这篇文章主要给大家简单介绍了jQuery.prop() 使用方法,有需要的小伙伴可以参考下

prop()函数用于设置或返回当前jQuery对象所匹配的元素的属性值。

该函数属于jQuery对象(实例)。如果需要删除DOM元素的属性,请使用removeProp()函数。

语法

jQuery 1.6 新增该函数。prop()函数有以下两种用法:

用法一:

jQueryObject.prop( propertyName [, value ] )

设置或返回指定属性propertyName的值。如果指定了value参数,则表示设置属性propertyName的值为value;如果没有指定value参数,则表示返回属性propertyName的值。

参数value还可以是函数,prop()将根据匹配的所有元素遍历执行该函数,函数中的this指针将指向对应的DOM元素。prop()还会为函数传入两个参数:第一个参数就是该元素在匹配元素中的索引,第二个参数就是该元素propertyName属性当前的值。函数的返回值就是为该元素的propertyName属性设置的值。

用法二:

jQueryObject.prop( object )

以对象形式同时设置任意多个属性的值。对象object的每个属性对应propertyName,属性的值对应value。

注意:prop()函数的所有"设置属性"操作针对的是当前jQuery对象所匹配的每一个元素;所有"读取属性"的操作只针对第一个匹配的元素。
参数

请根据前面语法部分所定义的参数名称查找对应的参数。

参数 描述
propertyName String类型指定的属性名称。
value 可选/Object/Function类型指定的属性值,或返回属性值的函数。
object Object类型指定的对象,用于封装多个键值对,同时设置多项属性。
参数value可以是包括对象和数组在内的任意类型。

返回值

prop()函数的返回值是任意类型,返回值的类型取决于当前prop()函数执行的是"设置属性"操作还是"读取属性"操作。

如果prop()函数执行的是"设置属性"操作,则返回当前jQuery对象本身;如果是"读取属性"操作,则返回读取到的属性值。

如果当前jQuery对象匹配多个元素,返回属性值时,prop()函数只以其中第一个匹配的元素为准。如果该元素没有指定的属性,则返回undefined。

prop()和attr()的主要区别:prop()函数针对的是DOM元素(JS Element对象)的属性,attr()函数针对的是DOM元素所对应的文档节点的属性。详情请查看jQuery函数attr()和prop()的区别。

注意事项

1、如果通过prop()函数更改<input>和<button>元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改。

2、如果使用prop()函数操作表单元素的checked、selected、disabled等属性,如果该元素被选中(或禁用),则返回true,否则(意即HTML中没有该属性)返回false。

3、prop()函数还可以设置或返回DOM元素的Element对象上的某些属性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等属性。

4、在IE9及更早版本中,如果使用prop()函数设置的属性值不是一个简单的原始值(String、Number、Boolean),并且在对应的DOM元素被销毁之前,该属性没有被移除,则可能会导致内存泄漏问题。如果你只是为了存储数据,建议你使用data()函数,以避免内存泄漏问题。

示例&说明

以下面这段HTML代码为例:

复制代码 代码如下:
<div id="n1">
    <p id="n2" class="demo test" data-key="UUID" data_value="1235456465">CodePlayer</p>
    <input id="n3" name="order_id" type="checkbox" value="1">
    <input id="n4" name="order_id" type="checkbox" checked="checked" value="2">
</div>

我们编写如下jQuery代码:

var $n2 = $("#n2");
// prop()操作针对的是元素(Element对象)的属性,而不是元素节点(HTML文档)的属性
document.writeln( $n2.prop("data-key") ); // undefined
document.writeln( $n2.prop("data_value") ); // undefined

document.writeln( $n2.prop("id") ); // n2
document.writeln( $n2.prop("tagName") ); // P
document.writeln( $n2.prop("className") ); // demo test
document.writeln( $n2.prop("innerHTML") ); // CodePlayer
document.writeln( typeof $n2.prop("getAttribute") ); // function

// prop()设置的属性也是针对元素(Element对象),因此也可以通过元素本身直接访问
$n2.prop("prop_a", "CodePlayer");
document.writeln( $n2[0].prop_a ); // CodePlayer
var n2 = document.getElementById("n2");
document.writeln( n2.prop_a ); // CodePlayer

// 以对象形式同时设置多个属性,属性值可以是对象、数组等任意类型
$n2.prop( { 
  prop_b: "baike",
  prop_c: 18,
  site: { name: "CodePlayer", url: "https://www.jb51.net/" }
} );
document.writeln( $n2[0].prop_c ); // 18
document.writeln( $n2[0].site.url ); // https://www.jb51.net/

// 反选所有的复选框(没选中的改为选中,选中的改为取消选中)
$("input:checkbox").prop("checked", function(index, oldValue){
  return !oldValue;
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • jQuery中jqGrid分页实现代码

    jQuery中jqGrid分页实现代码

    今天看到javaeye上有人使用了jqGrid实现了数据的分页,参考它的代码,实现了这个功能,搬出来晒晒,作为自己以后学习的资料
    2011-11-11
  • jQuery幻灯片带缩略图轮播效果代码分享

    jQuery幻灯片带缩略图轮播效果代码分享

    这篇文章主要介绍了jQuery实现幻灯片带缩略图轮播特效,图片可以自行替换,推荐给大家,有需要的小伙伴可以参考下
    2015-08-08
  • jQuery中add实现同时选择两个id对象

    jQuery中add实现同时选择两个id对象

    jquery同时选择两个id对象的时候,可以用add来实现。
    2010-10-10
  • jQuery查询数据返回object和字符串影响原因是什么

    jQuery查询数据返回object和字符串影响原因是什么

    查询数据返回object和字符串,导致这两种情况的原因是什么呢?在本文将为大家详细介绍下,具体祥看代码
    2013-08-08
  • jQuery中delegate()方法用法实例

    jQuery中delegate()方法用法实例

    这篇文章主要介绍了jQuery中delegate()方法用法,实例分析了delegate()方法的功能、定义及为匹配元素的子元素添加一个或多个事件,并规定当这些事件发生时运行函数的使用技巧,需要的朋友可以参考下
    2015-01-01
  • jquery dialog获取焦点的方法

    jquery dialog获取焦点的方法

    这篇文章主要介绍了jquery dialog获取焦点的方法,结合实例形式分析了jQuery UI插件对话框dialog的基本使用技巧,需要的朋友可以参考下
    2017-02-02
  • 基于jQuery实现照片墙自动播放特效

    基于jQuery实现照片墙自动播放特效

    这篇文章主要为大家详细介绍了基于jQuery实现照片墙自动播放特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 基于JQuery的Select选择框的华丽变身

    基于JQuery的Select选择框的华丽变身

    HTML Form 表单里的各种组件,例如文本输入框,textarea,按钮等,都可以通过CSS或其它技术进行美化,让它们看起来很漂亮了,唯独下拉列表选项框(select box),不管你怎么做,它摆在那里总显得格格不入。
    2011-08-08
  • jquery+css+ul模拟列表菜单具体实现思路

    jquery+css+ul模拟列表菜单具体实现思路

    本文主要与大家分享下jquery ul模拟列表菜单的具体实现步骤及代码,有兴趣的朋友可以参考下哈,希望可以帮助到你
    2013-04-04
  • jQuery滚动加载图片实现原理

    jQuery滚动加载图片实现原理

    这篇文章主要介绍了jQuery滚动加载图片实现原理,通过四个方面来说明懒加载技术的原理,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论