[JS]jQuery中attr和prop方法的区别

前端开发 作者: 2024-08-25 18:10:01
相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties)。只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes。
  • attr: function( elem, name, value, pass ) {
  • var ret, hooks, notxml,
  • nType = elem.nodeType;
  • // don't get/set attributes on text,comment and attribute nodes
  • if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
  • return;
  • }
  • if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
  • return jQuery( elem )[ name ]( value );
  • }
  • // Fallback to prop when attributes are not supported
  • if ( typeof elem.getAttribute === "undefined" ) {
  • return jQuery.prop( elem, value );
  • }
  • notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
  • // All attributes are lowercase
  • // Grab necessary hook if one is defined
  • if ( notxml ) {
  • name = name.toLowerCase();
  • hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
  • }
  • if ( value !== undefined ) {
  • if ( value === null ) {
  • jQuery.removeAttr( elem, name );
  • return;
  • } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, name )) !== undefined ) {
  • return ret;
  • } else {
  • elem.setAttribute( name, value + "" );
  • return value;
  • }
  • } "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
  • return ret;
  • } else {
  • ret = elem.getAttribute( name );
  • // Non-existent attributes return null,we normalize to undefined
  • return ret === null ?
  • undefined :
  • ret;
  • }
  • }
  • prop: ) {
  • // don't get/set properties on text,85); font-weight:bold; background:transparent">return;
  • }
  • notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
  • if ( notxml ) {
  • // Fix name and attach hooks
  • name = jQuery.propFix[ name ] || name;
  • hooks = jQuery.propHooks[ name ];
  • }
  • if ( value !== undefined ) {
  • in hooks && (ret = hooks.set( elem,85); font-weight:bold; background:transparent">else {
  • return ( elem[ name ] = value );
  • }
  • } else {
  • in hooks && (ret = hooks.get( elem,85); font-weight:bold; background:transparent">null ) {
  • return elem[ name ];
  • }
  • }
  • }
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68530.html