jQuery源码解析之构造函数的方法

jQuery共有七种方法
jQuery(selector[,content])
如果传入一个字符串参数,jQuery会检查这个字符串是选择器表达式还是HTML代码.如果是选择器表达式,则会遍历文档,查找与之匹配的DOM元素,并且创建一个包含了这些DOM元素引用的jQuery对象,如果没有与之匹配的元素则会创建一个空的jQuery对象,其中不包含任何一个元素,其length为0
默认情况下,对匹配元素的查找将从根元素document对象开始,即查找范围是整个文档树,不过也可以传入第二个参数contentx来限定查找范围,看代码
$('div.foo').click(function() {
$('span', this).addClass('bar'); // 限定查找范围
});
在上述代码中间,只有被点击的元素内的span才会添加bar样式
如果选择器表达式是简单的$("#id"),则会根据原始的document.getElementById("id");来查找,如果是复杂的表达式或者指定了上下文,则会通过find()方法来查找,因此$("span",this)相当于$(this).find("span");


jQuery(html[,ownerDocument])、jQuery(html,prop)
如果传入的值是一段html代码,jQuery则尝试用这段代码创建新的Dom元素,并创建一个包含了这些Dom元素引用的jQuery对象,如果插入的是一段单标签,jQuery会使用原始的document.createElement()来创建,否则会使用innerHtml机制来创建Dom元素,这个过程由jQuery.buildFragment()和方法jQuery.clean()来实现,第二个参数是一个document对象,如果不传入,则会使用当前文档对象
如果HTML代码是一个单独的标记,那么第二个参数是props,props是一个包含了属性、事件的普通对象;在调用document.createElement()创建DOM元素后,参数props会被传给jQuery的attr()方法,然后有.attr()负责把参数props中的属性,事件设置到新创建的Dom元素上面去
参数props的属性可以是任意的事件类型("click"),此时属性应该是事件监听器函数,它将被绑定到新创建的DOM元素上面;参数可以是以下特殊类型:val,css,html,text,data,width,height,offset,相应的jQuery方法:val(),css(),html(),text(),data(),width(),height(),offset()将被执行,并且属性值会作为参数传入,其他类型的属性
则会被设置到新创建的DOM 元素上,某些特殊属性还会做跨浏览器兼容(如type、value、
tabindex 等);可以通过属性名class 设置类样式,但要用引号把class 包裹起来,因为class
是JavaScript 保留字。






jQuery( element )、jQuery( elementArray )
如果传入一个DOM 元素或DOM元素数组,则把DOM 元素封装到jQuery 对象中并返回。
这个功能常见于事件监听函数,即把关键字this 引用的DOM 元素封装为jQuery 对象,
然后在该jQuery 对象上调用jQuery 方法。例如,在下面的例子中,先调用$(this) 把被点击
的div 元素封装为jQuery 对象,然后调用方法slideUp() 以滑动动画隐藏该div 元素:
$('div.foo').click(function() {
$(this).slideUp();
});






jQuery(object)
如果传入的是一个普通的javascript对象, 则把该对象封转到jQuery对象中并返回
这个功能可以方便地在普通JavaScript 对象上实现自定义事件的绑定和触发,例如,执
行下面的代码会在对象foo 上绑定一个自定义事件custom,然后手动触发这个事件,执行绑
定的custom 事件监听函数,如下所示:
// 定义一个普通 JavaScript 对象
var foo = {foo:'bar', hello:'world'};
// 封装成 jQuery 对象
var $foo = $(foo);
// 绑定一个事件
$foo.on('custom', function (){
console.log('custom event was called');
});
// 触发这个事件
$foo.trigger('custom'); // 在控制台打印"custom event was called"




 jQuery( callback )
如果传入一个函数,则在document 上绑定一个ready 事件监听函数,当DOM 结构加载
完成时执行。ready 事件的触发要早于load 事件。ready 事件并不是浏览器原生事件,而是
DOMContentLoaded 事件、onreadystatechange 事件和函数doScrollCheck() 的统称






jQuery( jQuery object )
如果传入一个jQuery 对象,则创建该jQuery 对象的一个副本并返回,副本与传入的
jQuery 对象引用完全相同的DOM 元素。


jQuery()
如果不传入任何参数,则返回一个空的jQuery 对象,属性length 为0。注意,在jQuery
1.4 之前,会返回一个含有document 对象的jQuery 对象。
这个功能可以用来复用jQuery 对象,例如,创建一个空的jQuery 对象,然后在需要时
先手动修改其中的元素,再调用jQuery 方法,从而避免重复创建jQuery 对象。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值