扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
链式编程,隐式迭代是jQuery的一个特性,它支持以链条的形式,不用显示的迭代多层数据。
成都创新互联专注于房县企业网站建设,成都响应式网站建设公司,商城网站建设。房县网站建设公司,为房县等地区提供建站服务。全流程按需定制网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
举个列子:
//普通做法是这样的
obj.name
=
'小明';
obj.age
=
155;
//链式编程是这样的。
obj.name('小明').age(15);
$("input").after("pone/p").after("ptwo/p);
这就是方法链的编程风格,after的返回值就是调用它的对象
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,也就是返回了调用者自身,所以可以链式调用。
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());//
直接复制在控制台输入,就可以进行调试了
1、首先新建html文档,向下查找兄弟标签:.next()。
2、jquery支持链式操作,向下查找兄弟标签的兄弟标签:.next().next()。
3、接着向下查找所有兄弟标签:nextAll(),向下查找一直找到某个条件为止:nextUntil('条件')。
4、向上查找兄弟标签:.prev(),向上查找所有兄弟标签:prevAll(),向上查找一直找到某个条件为止:prevUntil('条件')。
5、最后查找父标签:parent(),查找所有父标签:parents(),如果没有人拦着,会一直找找到最上面的父标签(没什么用),条件满足时停止查找:parentsUntil('body') 。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流