jQuery.access的作用

jQuery.access为attr,prop,css,html等方法提供通用的键值设置/读取方法

// 用于设置和获取集合的值的多用途方法
// 当value/s为function时,可以被选择地执行
access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
    var exec,
        bulk = key == null,
        i = 0,
        length = elems.length;

    // 如果key是属性集合,分多次为elements设置所有属性
    if ( key && typeof key === "object" ) {
        for ( i in key ) {
            jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
        }
        chainable = 1;            //此次调用为非get属性

    // 如果是单个属性,且value不为空(此次调用为非get属性)
    } else if ( value !== undefined ) {
        //value是否为可执行函数(如果是,则设置value为将element传入function执行后的返回值,否则为固定值)
        exec = pass === undefined && jQuery.isFunction( value );

        //如果未指定key,则具体的key依赖fn
        if ( bulk ) {
            // 如果需要设置的value依赖function执行后的返回值,则包装fn,将其上下文变为单个element,在#1处处理
            if ( exec ) {
                exec = fn;
                fn = function( elem, key, value ) {
                    return exec.call( jQuery( elem ), value );
                };

            // 否则,fn上下文设为全部elements(jquery对象),在此处处理
            } else {
                fn.call( elems, value );
                fn = null;
            }
        }

        // 如果还未处理    #1
        if ( fn ) {
            for (; i < length; i++ ) {
                fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
            }
        }

        chainable = 1;            //此次调用为非get属性
    }

    return chainable ?
        elems :

        // 为get调用,返回get值或指定空值
        bulk ?
            fn.call( elems ) :
            length ? fn( elems[0], key ) : emptyGet;
}
时间: 2024-07-29 14:15:29

jQuery.access的作用的相关文章

jQuery.access()方法

最开始只是想了解attr方法,发现它内部调用了jQuery.access()方法.除了attr,还有prop.text.html.css.data 都是内部调用了jQuery.access()方法,可见它的重要. attr: function( name, value ) { return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); } prop: function( name, value ) {

jQuery.access源码分析

基本理解 jQuery.attr是jQuery.attr,jQuery.prop,jQuery.css提供底层支持,jQuery里一个比较有特色的地方就是函数的重载, 比如attr,有如下几种重载 $('#box').attr('title') $('#box').attr('title','标题') $('#box').attr({title:'标题',data-menu-toggle:'dropdown'}) $('#box').attr('title',function () {....}

jQuery.fn的作用是什么

jQuery.fn的作用是什么:在自定义jQuery插件中,会经常见到jQuery.fn的身影,下面就简单介绍一下它的作用到底是什么.想要认识它的本质,最好的办法直接看jQuery的源码,否则一切都是根据现象进行的猜测,难免出现失误.jQuery1.83中的代码如下: [HTML] 纯文本查看 复制代码运行代码 1 2 3 jQuery.fn = jQuery.prototype = {    //代码 } 由上面的代码可以清晰的看出jQuery.fn执行jQuery的原型对象.明白了上面的道理

jQuery.buildFragment源码分析以及在构造jQuery对象的作用

这个方法在jQuery源码中比较靠后的位置出现,主要用于两处.1是构造jQuery对象的时候使用 2.是为DOM操作提供底层支持,这也就是为什么先学习它的原因.之前的随笔已经分析过jQuery的构造函数了,也提到了有12个分支,其中有一个分支就是通过jQuery.buildFragment方法来处理的,什么情况呢?就是在处理复杂html标签的时候,例如$('<div>123</div>')这样的形式,在构造函数内部通过ret变量判断是不是简单标签,如果是就调用js的createEl

jQuery源码学习(四)

队列queue() 队列(先进先出)方法,执行顺序的管理. <script type="text/javascript"> //大体框架 //队列先进先出 //队列其实就是一个数组 jQuery.extend([//工具方法 queue//相当于数组的push操作-往数组的后面添加数据 入队操作 dequeue//相当于数组的shift操作-从数组的前面取数据 出队操作 _queueHooks ]); jQuery.fn.extend([//实例方法 queue //入队

jquery工具方法access详解

access : 多功能值操作(内部) access方法可以使set/get方法在一个函数中体现.比如我们常用的css,attr都是调用了access方法. css的使用方法: $(selector).css(key)  //get$(selector).css(key,valye)  //set$(selector).css({key1:valye1,key2:value2})  //set$(selector).css(function(){ ............. })  //set

jquery源码分析(二)——结构

再来复习下整体架构: jQuery源码分析(基于 jQuery 1.11 版本,共计8829行源码) (21,94)                定义了一些变量和函数jQuery=function(){} (96,280)        给jQuery添加一些方法和属性,jQuery.fn=jQuery.prototype(285,347)        extend:        jQuery的一些继承方法        更容易进行后续的扩展                       

JQuery对象操作支持链式法则源码分析

JQuery链式法则 何为链式法则?先给出非链式写法的例子 //非链式写法 $("div").css("width", 45px); $("div").css("height", 45px); 再给出链式写法的例子 //链式写法 $("div").css("width", 45px).css("height", 45px); JQuery实现元素的定位与操作,如果每一

JQuery html API支持解析执行Javascript脚本功能实现-代码分析

JQuery html用法(功能类似innerHTML) 开发中需要使用Ajax技术来更新页面局部区域, 使用的方法是ajax获取html代码段(字符串),然后将这个html代码段作为参数,传入目标DOM(JQuery对象)的JQuery html接口,此语句执行后, 会将html代码段解释执行, 显示出html代码段描述的页面控件. 例如: <html> <head> <script type="text/javascript" src="./