您的位置:首页 - 教程 - jQuery - 正文
jQuery()函数的调用
jQuery()函数

在jQuery类库中,最重要的方法是jQuery()方法,(也就是$())。它的功能很强大,有四种不同的调用方式。

第一种也是最常用的调用方式是传递CSS选择器(字符串)给$()方法。当通过这种方式调用时,$()方法会返回当前文档中匹配该选择器的元素集。jQuery支持大部分css3选择器语法,还支持一些自己的扩展语法。8小节i节将阐述jQuery选择器的语法。还可以将一个元素或jQuery对象作为第二个参数传递给$()方法,这时返回的是该特定元素或元素的子元素中匹配选择器的部分。第二个参数是可选的,定义了元素的查询的起点,经常称为上下文(context)。

第二种调用方式是传递一个Element、Document或window对象给$()方法。在这种情况下,$()方法只须简单地将Element、Document或window对象封装成jQuery对象并返回。这样可以使得能用jQuery方法来操作这些元素而不使用原生的DOM方法。例如,在jQuery程序中,经常可以看见$(document)或$(this)。jQuery对象可以表示文档中多个元素,也可以传递一个元素数组给$()方法。在这种情况下,返回的jQuery对象表示该数组中的元素集。

第三种调用方式是传递HTML文本字符串给$()方法。这这种情况下,jQuery会根据传入的文本创建好HTML元素并封装为jQuery对象返回。jQuery不会将刚创建的元素自动插入文档中,可以使用第3节描述的jQuery方法将元素插入到想要的地方。注意,在这种调用下,不可传入纯文本,因为jQuery会把纯文本当做是CSS选择器来解析。当使用这种调运风格时,传递给$()字符串必须至少包含一个带尖括号的HTML标签。

通过第三种方式调用时,$()接受可选的第二参数。可以传递Document对象来指定与所创建关联的文档。(比如,当创建的元素要插入iframe里时,需要显式的指定iframe的对象。)第二参数还可以是object对象。此时。假设该对象的属性表示HTML属性的键/值对,这些属性将设置到所创建的对象上。当第二参数对象的属性名是css,html,text,width,heigeht,offset,val,data或者属性名是jQuery事件处理程序注册方法名时,jQuery将调用新创建元素上的同名方法,并传入属性值。(css(),html(),text()等方法将在第2节讲述,事件处理程序注册方法将在第4节讲述),例如:

var img = $("<img>", //新建一个<img>元素
{
src: url, //具有html属性
css: {borderWidth: 5}, //css样式
click: handClick //和事件处理程序
});
第四种调用方式是传入一个函数给$()方法。此时,当文档加载完且DOM程序可以操作时,传入函数将被调用。这是常见onLoad()函数的jQuery版本。在jQuery程序中,在jQuery()里定义一个匿名函数非常常见:

jQuery(function(){//文档加载完毕时调用
//所有的代码放在这里
});
有时候我们还可以看见老式的写法$(f)和完整的写法

$(document).ready(f)
传递给jQuery()的函数在被调用时,this指向document对象,唯一的的参数指向jQuery函数 。这意味这可以释放全局的$()函数,但在内部依旧可以延续该习惯:

jQuery.noConflict();//还原$()为初始值
jQuery(function($){ //让$()成为jQuery对象的局部别名
//jQuery代码
});
通过$注册的函数将在DOMContentLoaded事件触发时由jQuery触发。当浏览器不支持该事件时,会在load事件触发时由jquery触发。这意味这文档已经完毕,但图片等外部资源还有可能未加载完。如果DOM准备就绪后再传递函数给$(),传递的函数会在$()返回之前立刻调用。

jQuery类库还使用jQuery()函数作为其命名空间,在下面定义了不少的工具函数和属性。比如jQuery.noConflict();就是其中的一个工具函数。还包括遍历的jQuery.each(),以及用来解析JSON文本的jQuery.parseJSON()。第7节例举了这些通用函数,jQuery的其它函数在本章中都会提及。

评论: