`
zhouyrt
  • 浏览: 1173883 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读jQuery之十七(attribute/property/class)

 
阅读更多

 

jQuery的属性模块提供了如下方法

attr/removeAttr

prop/removeProp(1.6)

addClass/removeClass/toggleClass/hasClass

val

 

提供了几个静态方法以支持JQ对象以上方法,如jQuery.attr 对应  attr,即jq对象的attr方法内部调用了jQuery.attr。其次还有

jQuery.removeAttr -> removeAttr

jQuery.prop -> prop

 

看代码可发现attr和prop方法中都直接调用的是jQuery.access

attr: function( name, value ) {
    return jQuery.access( this, name, value, true, jQuery.attr );
},
prop: function( name, value ) {
    return jQuery.access( this, name, value, true, jQuery.prop );
},

 

最后一个参数分别是jQuery.attr,jQuery.prop。可以想象在jQuery.access中会调用传入的这个函数。下面是jQuery.access的源码

access: function( elems, key, value, exec, fn, pass ) {
    var length = elems.length;
 
    // Setting many attributes
    if ( typeof key === "object" ) {
        for ( var k in key ) {
            jQuery.access( elems, k, key[k], exec, fn, value );
        }
        return elems;
    }
 
    // Setting one attribute
    if ( value !== undefined ) {
        // Optionally, function values get executed if exec is true
        exec = !pass && exec && jQuery.isFunction(value);
 
        for ( var i = 0; i < length; i++ ) {
            fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
        }
 
        return elems;
    }
 
    // Getting an attribute
    return length ? fn( elems[0], key ) : undefined;
},

 

 

当 设置/获取属性的时候遍历jQuery对象,依次调用fn函数。这里的fn可能是jQuery.attr和jQuery.prop。

需要注意的是这里用for遍历elems,这个elems实际是jQuery对象,jQuery对象它是一个ArrayLike。

 

大概就是如此,剩下的一堆hooks是用来解决浏览器兼容性的问题。如jQuery.attrHooks、jQuery.propHooks、jQuery.valHooks。列举如下

1,IE6/7不完全支持setAttribute,比如不能设置class,for等属性

2,IE6/7中getAttribute获取href / src 属性(相对路径)值与其它浏览器不同

3,IE6/7中获取Button元素的值有bug

4,IE6/7不支持setAttribute设置style / 不支持getAttribute获取style属性值

5,获取tabIndex属性有差异

6,布尔类型属性的修复,如selected,disabled,checked等

7,select和option元素的值修复

 

 

分享到:
评论

相关推荐

    jquery1.6.1 jquery

    `.attr()`用于获取或设置元素的属性(attribute),而`.prop()`用于处理元素的属性(property),如checked、selected等状态。 - **事件处理** 进一步优化,提供了更细粒度的控制,例如使用`.on()`方法可以绑定事件...

    jquery文本,以文本格式保存的jquery文件

    首先,**选择器**是jQuery的核心功能之一,它允许开发者高效地选取DOM元素。jQuery的选择器语法是基于CSS选择器的,如`$("#id")`选取ID为指定值的元素,`$(".class")`选取具有特定类名的元素,`$("tag")`选取所有...

    jquery文档、API

    2. 修改属性:`.attr(attributeName, value)`设置属性值,`.removeAttr(attributeName)`移除属性,`.prop(propertyName, value)`用于处理布尔属性或复杂属性。 3. CSS操作:`.css(styleName, value)`修改样式,`....

    jquery-1.4.2.js

    在jQuery 1.6版本中,引入了`attr`和`prop`方法的区分,`attr`用于获取或设置元素的特性(attribute),而`prop`则用于处理属性(property),这使得处理DOM元素的状态更加精确。 **jQuery核心概念** 1. **选择器*...

    jquery chm 离线文档 附代码

    1. **选择器(Selectors)**:jQuery提供了丰富的CSS选择器,如ID选择器 (#id),类选择器 (.class),元素选择器 (element) 等,使我们能够快速定位到页面上的元素。 2. **DOM操作(DOM Manipulation)**:jQuery...

    JQuery最新版速查表

    1. **选择器**:jQuery提供了丰富的选择器,如`$("#id")`选择ID为id的元素,`$(".class")`选择所有class为class的元素,`$("tag")`选择所有tag标签。 2. **链式操作**:jQuery对象返回的是自身,因此可以连续调用多...

    JQuery中文帮助文档

    - **选择器**: jQuery的选择器是基于CSS选择器扩展的,如`$("#id")`选取ID为id的元素,`$(".class")`选取所有class为class的元素。 - **DOM操作**: `$(element).html()`用于获取或设置元素的HTML内容,`$(element)...

    JQuery API教程!绝对齐全

    1. **属性与样式操作**:`$(selector).attr('attribute')`获取属性值,`$(selector).css('property', 'value')`设置样式属性。 2. **尺寸与位置**:`$(selector).width()`和`.height()`获取元素尺寸,`$(selector)....

    先锋jQuery学习实例

    `$(element).attr('attributeName', 'value')`用于设置或获取元素属性,`$(element).prop('property')`则用于处理DOM元素的特性,如checked状态或selected选项。 9. **链式调用(Chaining)** jQuery方法返回的是...

    jquery语法与选择器介绍 带有案例

    3. **属性选择器**:`$('[attribute=value]')`(按属性选择)、`$('[attribute*=value]')`(包含匹配)。 4. **伪类选择器**:`$('element:first')`(首个元素)、`$('element:last')`(最后一个元素)、`$('element...

    jQuery完全实例.rar

    jQuery中的一切都构建于这个函数之上,或者说都是在以某种方式使用这个函数。这个函数最基本的用法就是向它传递一个表达式(通常由 CSS 选择器组成),然后根据这个表达式来查找所有匹配的元素。 默认情况下, 如果...

    jQuery帮助手册(doc)

    ### jQuery帮助手册(doc) #### 一、简介 jQuery 是一款优秀的 JavaScript 开发库,它以其简洁、高效和丰富的功能而著称。尤其在 CSS 和 XPath 的支持方面表现卓越,使得开发者能够更加轻松地编写 JavaScript ...

    jQuery1.7中文API

    5. **CSS操作(CSS)**:jQuery允许轻松改变样式,如`$(selector).css('property', 'value')`设置样式,`$(selector).addClass('className')`和`.removeClass('className')`管理类名。 6. **动画(Animation)**:`...

    jQuery第4天知识点:jQuery节点操作、jQuery特殊属性操作、jQuery事件机制.zip

    1. 选择器:jQuery提供了丰富的选择器,如ID选择器(#id)、类选择器(.class)、元素选择器(element)等,用于快速定位DOM元素。例如,`$("#myID")`将选取ID为"myID"的元素。 2. 获取和设置节点:`$(selector).html()`...

    jquery英文API

    jQuery的选择器是其强大之处之一,它基于CSS选择器,让选取DOM元素变得非常容易。例如: - `$()` 函数用于创建jQuery对象,接受一个CSS选择器作为参数,如 `$('div')` 会选择所有的`&lt;div&gt;`元素。 - `id` 选择器,如 ...

    java资料jqueryAPI

    4. **属性操作(Attribute Handling)**:通过`attr('attribute', 'value')`可以设置或获取元素的属性,`removeAttr('attribute')`移除属性,`prop('property', 'value')`用于处理元素的特定属性,如checked状态或...

    jquery1.6官方中文api+jquery1.7中文api

    2. **属性选择器增强**:增加了`attr()`方法,允许开发者获取或设置元素的属性值,同时区分了属性值(attribute)和特性值(property)的区别。 3. **新选择器**:引入了`:first-child`和`:last-child`伪类选择器,...

    简单的jQuery实例

    **jQuery简介** jQuery是一个高效、简洁且功能丰富的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。jQuery的核心理念是"write less, do more",即通过简短的代码实现复杂的功能...

    jquery-1.6.4

    - **选择器**:jQuery提供了丰富的CSS选择器,如ID选择器(#id)、类选择器(.class)、属性选择器([attribute])等,使得元素选取变得简单直观。 - **DOM操作**:包括添加、删除、查找、替换DOM元素,如`$(selector)....

    jquery 客户端笔记

    - `$("[attribute=value]")`:选取属性`attribute`等于`value`的元素。 ### 四、DOM 操作 jQuery 提供了简单的方法来操作DOM元素,如添加、删除和修改元素: - `append()`:在元素内部追加内容。 - `prepend()`:...

Global site tag (gtag.js) - Google Analytics