addClass()的分析方法解释jQuery的源代码

addClass()的分析方法解释jQuery的源代码
本文给出了节点的更详细的分析()的jQuery代码的解释方法分享给你供你参考。具体分析如下:

延长addClass函数jQuery原型对象,jquery.fn是jquery.prototype

复制代码代码如下:jquery.fn.extend({

*

可以看出,这是一个插件的方法称为节点。

* /

AddClass:功能(价值){

VaR类元素,cur,类,J,finalvalue,

我= 0,

*

这表明选择器选择可以添加类的jQuery对象,而Len是jQuery对象数组的长度。

* /

this.length len =,

在一个操作数不是布尔值的情况下,操作不一定在此时返回布尔值,它遵循以下规则:

1。如果第一个操作数不是布尔值,则返回第二个操作数。

//2. 如果第二个操作数不是布尔值,则只有在第一个操作数的结果为真时才会返回对象。

3。如果两个操作数不是布尔值,则返回第二个操作数。

4。如果操作数为空则返回null;

5。如果操作数为楠,则返回;

6。返回未定义的操作数未定义。

1:如果值为null,则按照规则4返回null;

2: / /如果值是未定义的,与规则6,按照返回未定义,定义出发=;

3:如果值是南方,按照规则5,返回南方,继续;

4:如果值是数值类型,返回false;

5:如果值是布尔类型,则返回false;

7: / /如果值是数组,对象,函数式,根据规则2,但类型值= = = 'string'is FALSE,返回的对象,返回false。

8:如果值是String类型,则按照规则2返回值。

因此,这句话只能判断 ,值不是字符串,返回字符串值继续。任何其他类型最终返回false,或者可以隐式转换为false的类型。

继续= typeof值=字符串值;

由于上述只能判断 / /字符串类型,确定是否有价值的功能类型。使用jQuery的全局函数功能,它为功能的()。

如果(jquery.isfunction(值)){

如果值是type函数,在这里。

将一个jQuery对象返回到调用链。

下面是您的这个jQuery对象选择器。

返回this.each(功能(J){

/ /迭代,这是不是一个jQuery对象是DOM对象的当前迭代,所以使用jQuery(this)包装,作为一个jQuery对象,所以你可以使用jQuery的方法。J代表每个穿越指标。通过一个价值函数用于设置有一个返回值的类的名称。价值函数的调用,和当前的DOM对象执行它。它介绍了当前DOM索引和类名,以及值函数返回的值。它调用addClass()方法,再由jQuery(this)。AddClass(返回值)。如果返回的是一个字符串,其他分支的如果是执行。如果你返回功能,然后继续调用返回的函数。

jQuery(this)。AddClass(value.call(,j,这个类名));

});

}

在继续之前是一个字符串,以确定是否有空字符串,非空字符串隐式转换为true。空字符串隐式转换为false,然后if语句块不再执行,程序跳转到最后返回这个,返回到jQuery对象的结尾。

如果(继续){

/ /进行非空字符串,开始执行的语句块。假定值显示BD1 。

/ / rnotwhite是一个正则表达式( / / S + G),这意味着全球的比赛不是一个空白字符一次或更多。

(价值 / / | | )回到显示BD1

显示BD1。匹配 / /(( / / S + G))| | { } {展示回报

类=(价值| |)。比赛(rnotwhite)| | { };

现在的课是{ 'show ' / 'bd1}数组,你想添加一个类的名字

在遍历开始之后,为每个DOM对象添加一个类。

为了(;;我;我;+){

/ /这是jQuery对象,和元素是当前DOM对象。

elem =这{我};

*

运算符=操作符,首先确定DOM节点的类型是否是一个元素节点。

Rclass是一个正则表达式/ { R T;

三括号中的算子,DOM节点已经上课,有些话,将类中的选项卡,可以换行符,回车符等都是用一个空白的字符串最后变成取代

电流= elem.nodetype = 1 显示BD1

假设元素节点的类型是1,那么电流=真

如果元素的节点类型不为1,则电流=假

* /

电流= elem.nodetype(elem.classname = 1

(+ elem.classname +)。取代(中,):);

/ /现在我=显示BD1

如果(当前){

j=0;

*

类是{显示BD1}

循环检查添加的类已经存在于当前DOM元素已经存在的类中。

如果没有,添加这个类。

* /

而(((clazz =类{ J++ })){

如果(cur.indexof(+ +类)<< 0){

电流=类+ ;

}

}

*

最后,使用$()。修剪去除该类节目BD1 两端的空格字符。

检查当前DOM元素的类是否用一个拼接类重复,避免同一类渲染不必要的重复。

* /

finalvalue = jQuery.trim(CUR);

如果(elem.classname!= finalvalue){

elem.classname = finalvalue;

}

}

}

}

在将来返回到jQuery对象、调用链。

返回此;

}

});

希望本文能对大家的jQuery程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部