当前位置:首页>开发>正文

jQuery链式操作如何实现以及为什么要用链式 jQuery的链式操作是如何实现的

2023-07-31 02:37:46 互联网 未知 开发

 jQuery链式操作如何实现以及为什么要用链式 jQuery的链式操作是如何实现的

jQuery链式操作如何实现以及为什么要用链式

链式操作就是分步骤地对jQuery对象实现各种操作,举个栗子:
$("#Test").css(color,red).show(200).removeClass(style)上面的例子就是链式操作,在一行代码里,对id为Test的对象进行了三项操作:先设置其字体颜色为红色,再显示对象,最后移除对象的“style”这个样式。再炒个板栗:
$("#Test").addClass(style).find("div").eq(0).fadeOut(200)上面的例子意为:先为id为Test的对象添加"style"这个样式,再找寻其下的第一个div标签,并使其淡出。
通过上面的两个例子不难看出链式操作就是围绕一个jQuery对象进行的,很简单吧?

为什么要用链式操作呢?原因有两个:
代码更精简。链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定;
优化性能。使用链式操作,所有操作代码共享一个jQuery对象,省去了逐步查询DOM元素的性能损耗。

jQuery的链式操作是如何实现的

return this//返回对象自身。
例子:
function Test() {
    var self = this
    self.testStr = My name is 
    self.name = function( name ) {
        self.testStr  = name   
        return self
    }
    self.age = function( age ) {
        self.testStr  = .I m    age   years old.
        return self
    }
    self.end = function() {
        return self.testStr
    }
}
var setProfile = new Test()
//然后就可以进行链式操作了。
console.log(setProfile.name(Steve).age(22).end())//直接复制在控制台输入,就可以进行调试了

jquery选择器$("...")返回的是数组,为什么还能继续练式操作$("...").方法 ?

1、jquery选择器$(selector)返回的不是数组,而是封装好的jquery对象。但这个对象有一个特别的地方,就是查询到的节点被以下标为属性,添加到了jquery对象上,所以它看起来像数组,因为它存在一些属性是数字;
2、jquery对象有哪些属性和方法?
我们可以理解,$(selector)返回了一个对象obj,obj[0]....obj[i]总是返回查询到的第i个节点。除此之外,jquery对象还被通过prototype添加了一些方法,即:
jQuery.prototype.each = function(){}
jQuery.prototype.hasClass = function(){}
jQuery.prototype.hide = function(){}
jQuery.prototype.css = function(){}
jQuery.prototype.attr = function(){}等等。这样的话,$(selector)返回的对象就可以调用这些方法,比如obj.attr(name)、obj.css(color, red)。

3、jquery方法如何处理多个节点?
实际上,以上诸如hide、css、attr等方法,在jquery内部都是通过循环来处理各个节点的。但是,如果是要获取节点属性,比如obj.attr(name),显然这个只能返回一个字符串,所以类似的方法都是获取节点集合中的第一个节点的属性。也就是说,虽然返回的节点很多,但只有第一个会被处理。
4、为什么jquery可以链式调用?
在jquery中,很多同名的方法通过参数个数的不同实现不同的功能,比如css方法,如果传一个参数则表示获取css属性;如果传两个参数,则表示给节点添加某个属性,并赋值为第二个参数。attr、width等也是这样的处理。对于方法的返回值,除了获取属性值、获取css值等需要返回实际值的方法外,当css方法、attr方法表示为为节点添加属性、css样式时,是不需要返回值的,但jquery让这些方法返回了this,也就是返回了调用者自身,所以可以链式调用。

jquery命令链

$("") 这是个选择器,$("").css().click().toggle() 等等 分别表示设置$("")这个元素的css样式,单击样式,和显示隐藏效果,等同于
$("").css()
$("").click()
$("").toggle();