jquery核心函数.docx
《jquery核心函数.docx》由会员分享,可在线阅读,更多相关《jquery核心函数.docx(14页珍藏版)》请在冰豆网上搜索。
jquery核心函数
JQuery核心
Onload使用
我们有些时候需要在页面初始化完成的时候调用一些JavaScript预处理操作,例如设置某些
Button不可用等,这个时候我们通常有两种选择。
第一:
第二:
window.onload=someFunction;
上述代码意义相同,都会在页面初始化完成之后执行someFunction这个预先定义的JavaScript
函数。
但是,页面初始化完成到底是什么含义呢?
页面初始化完成意味着页面全部被浏览器显
示,也就是说所有的image都加载完成。
有些时候这个过程非常的常,有些时候我们可以看到有些
网站的button先是可用,后来等所有页面显示之后又不可用了就是这个原因。
那么我们到底在什么时候执行someFunction是比较合适的呢?
我们倾向于页面的全部document
内容被加载,而不是所有内容正确显示之后别调用。
以img为例说明上述的区别,例如
//hostname:
port/webapp/xxx.jpg”/>
当上述字面内容被浏览器下载完成时,我们可以说img被加载了,当
http:
//hostname:
port/webapp/xxx.jpg指向的内容被下载并且被正确显示之后,可以说img
被正确显示了。
如何使用JQuery来达到页面内容别加载就执行someFunction?
$(document).ready(someFunction);
$()是什么?
$()是JQuery的核心方法,$()方法有几种不同的调用方式,但是这几种方式都有一个共通的特
点,就是通过$()方法,可以将一个普通的HTMLDOM对象(p,div,body,doucment等)封装
成为一个特殊的,增强了JQuery功能的JQuery对象。
说道这里大家可能会知道了JQuery其实相当于一个对象,一个封装了不同HTMLDOM对象的对象。
$(string)
凭空创建一个JQuery包装起来的HTMLDOM对象,例如:
$("
").appendTo("body")
上述代码建立了一个Hello段,Hello段在一个div内部,之后将这个div追加到了doby内部。
$(elems)
讲一个已经存在的HTMLDOM对象包装为JQuery对象,例如:
$(document.body).css("background","black");
上述代码把body的background设置为black
$(myForm.elements).hide()
隐藏myForm中所有的对象
$(function)
$(document).ready(function)的简写,总共有三种方法让一个function在dom初始化完成之
后被调用:
$(document).ready(function)
$(function)
JQuery(function)
$(expr,context)
在上下文()中查找表达式()所只是的对象,context不存在的情况下在document上下文中查
找,例如:
DOM对象:
one
three
调用:
$("div>p")
结果:
two
$("input:
radio",document.forms[0])
查找第一个form中的所有redio类型的输入框。
$("div",xml.responseXML)
查找xml.responseXML指示的XML文件内容中所有的div项。
扩展JQuery的功能
可以使用$.fn.extend(prop)来扩展JQuery提供的功能,例如,JQuery并没有提供check和
uncheck方法,但是我们可以通过如下的代码扩展JQquery,使JQuery增加check和uncheck功
能:
jQuery.fn.extend({
check:
function(){
returnthis.each(function(){this.checked=true;});
},
uncheck:
function(){
returnthis.each(function(){this.checked=false;});
}
});
之后我们可以选择一个对象来使用扩展的check和uncheck方法,例如:
$("input[@type=checkbox]").check();
$("input[@type=radio]").uncheck();
解决和其他框架的冲突
$在JQuery中有着特殊的含义,但是有些时候我们的项目已经集成了其他的框架)(例如
Prototype),在其他框架中$已经被使用了,那么我们怎么消除JQuery对$指定的特殊含义呢?
我们可以使用jQuery.noConflict()方法,在调用这个方法之后,$已经不在具有我们前面说的
JQuery赋予的功能,所以所有的后续代码必须使用JQuery调用,例如:
jQuery.noConflict();
//调用JQuery的方法
jQuery("divp").hide();
//调用其他框架的$()方法
$("content").style.display='none';
我们也可以指定自己喜欢的名字来替换$,例如:
varj=jQuery.noConflict();
//调用jQuery的方法
j("divp").hide();
//调用其他框架的$()方法
$("content").style.display='none';
其他常用方法
each(fn)
这对数组中的每一个对象调用fn方法。
例如:
HTMLDOM代码:
调用方法:
$("img").each(function(i){
this.src="test"+i
+".jpg";
});
结果:
src="test1.jpg"/>
eq(pos)
定位具体的HTMLDOM对象
HTMLDOM代码:
Thisisjustatest.
Soisthis
调用方法:
$("p").eq
(1)
结果:
Soisthis
get(pos)
定位具体的HTMLDOM对象(脱掉了JQuery的包装,原始的DOM对象)
HTMLDOM代码:
调用方法:
$("img").get(num)
结果:
get()
针对所有的对象,脱掉了JQuery的包装,获取原始的DOM对象
HTMLDOM代码:
调用方法:
$("img").get()
结果:
src="test2.jpg"/>
gt(pos)
取出pos之后的所有对象
HTMLDOM代码:
调用方法:
$("img").gt(0)
结果:
index(subject)
找到subject在数组中对应的index,不存在时返回-1
HTMLDOM代码:
Thisisjustatest.
Thisisjustatest.