JQuery简介
一:普通的JavaScript的缺点是:每种控件的操作方式不统一,不同浏览器下有区别,要编写跨浏览器的程序非常麻烦。因此出现了很多对JavaScript的封装,比如Prototype ,Dojo ,ExtJS ,JQuery 等,这些库对JS进行了封装,简化了开发。这些库是对JS的封装,也就是咱们调用JQuery的一句话,而在JQuery内部这句函数就帮我们调用Js中的代码几十句,因为JQuery就是JavaScript语法写的一些函数类,内部仍然是调用JavsScript实现的,所以并不是代替JavaScript的。使用JQuery的代码,编写JQuery的扩展插件等仍然需要JavaScript的技术,JQuery本身就是一堆JS函数。
二:它能做做呢?尺寸小,使用简单方便(Write Less Do More)链式编程($("#div1").Draggble().hide().fly())隐式迭代(自动对于多个元素进行迭代方法调用),屏蔽浏览器差异兼容性好(IE6.0+ ,FF2+ ,Safari 3.0+ ,Opera9.0+ ,Chrome ) 插件丰富,开源,免费。在这几个中JQuery-1.4.1-Vsdoc.js是在输入东西时自动提示功能效果。
JQuery是最火的JavaScript库,已经被集成到VS2010了,得到了MS的支持,
第一部分:简单的JQuery
一:$(document).ready(function(){加载完毕!});——简写方式[$(function(){alert("加载完毕!");});] 在JQuery中注册事件的函数,和普通的Dom不一样,不需要在元素上标记onload onclick onclientclick等东西了。
二:和onload类似,但是onload只能注册一次是这样写的(window.onload=function(){alert("加载完毕!")})如果写多个这样事件的话也只能执行最后一个它没有C#中的+=机制,后注册的取代先注册的,而ready则可以多次注册都会被执行。
三:JQuery的ready和Dom的onload的区别:onload是在所有Dom元素分明建完毕,图片,Css等都加载完毕后才被触发,而ready则是Dom元素创建完毕后就被触发,这样可以提高网页的响应速度。在JQuery中也可以用$(window).load()来实现onload那种事件调用的时机。
三:JQuery提供的一些函数:
$.map(arr,fn);是对数组arr中每个元素调用fn函数逐个进行处理,fn函数将处理返回,最后得到一个新数组。
例子,得到一个元素值是原数组值二倍的新数组
var array=[2,3,4];
var arr=$.map(array,function(item){ return item*2;});
alert(arr);
但是$.map()不能处理Dictionary式的数组可以用到$.each(dic,value)函数。
var dic={"tom":23,"jery":22};
$.each(dic,function(key,value){alert(key+"的年龄是"+value);});
当然也可以用$.each()处理一般的数组不过也要写上key and value 如下:
var array=[2,3,4];
$.each(array,function(key,value){alert(key+"="+value);});
其结果为:0=2,1=3,2=4.
但是若只用Item 时就会只显示key的值,这对于我们来说没有什么意义。
也可以取到value这时可以用不带参数的function()而在后面用this关键字就可以啦如下
:
var array=[2,3,4];
$.each(array,function(){alert(this);});结果为:2,3,4。
当用关键字this 时用Dictionary也是显示它的值如下:
var dic={"tom":23,"jery":22};
$.each(dic,function(){alert(this);});
结果为:23,22.
第二部分:JQuery对象,Dom对象
1):
JQuery对象就是通过去时JQuery包装Dom对象后产生的对象:
alert($('#div1').html()) 。 Dom对象要想通过JQuery进行操作,先要转换为JQuery对象。如:
<head>
<title></title>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () { alert($("#div1").html()); });
</script>
</head>
<body>
<div id="div1">你好呀<font color="Red">朋友</font></div>
</body>
【注意】Array是JS语言本身的对象,不是Dom对象,因此不需要转换为JQuery对象才能用
2):
$("#div1").html()等价于:document.getElementById("div1").innerHTML;
$("#div1")得到的就是JQuery对象,JQuery对象只能调用JQuery对象封装的方法,不能调用Dom对象的方法,Dom对象也不能调用JQuery对象的方法,所以alert($("#div1").innerHTML);是错的,因为innerHTML是DOM对象的属性。
3):
将Dom对象转换为JQuery对象的方法,$(dom对象);当调用JQuery没有封装的方法的时候必须用Dom对象,转换方法:var domobj=jqobj[0]或者var domobj=jqobj.get(0);例子如下:
$(function (){var div1=document.getElementById("div1");$(div1).html();});
4):
JQuery修改样式:$("#div1").css("background","red");获得样式:
$("#div1").css("background");修改value:$("#txtname").val("abc");获得value:$("#un").val();类似的还有获得设置innerText,innerHTML用text()和html()。
第四部分 JQueru选择器
1):
JQuery选择器用于查找满足条件的元素,比如可以用$("#控件id");来根据控件id获得控件的JQuery对象,相当于getElementById();
2):
$("TagName");来获取所有指定标签名的JQuery对象,相当getElementByTagName
:例子如下:
<script type="text/javascript">
// $("p").click(function () { alert("你点我了!我是"); })这句是不能执行的,因为在此时dom元素还没有加载完毕,这和在dom中把初始化事件放到onload事件中是一样的。
$(function () { $("p").click(function () { alert("你点我了!我是"); }) });这也是一种隐式迭代,给所有的选择出来的元素增加click事件响应。
3)Css选择器。同时选择拥有相同样式的多个元素:例子如下
先自己随便写一个样式:
<style type="text/css">
.test{background-color:Red}
</style>
再定义几个元素:
<p class="test">abc</p>
<p class="test">节能</p>
<p class="test">sdkfsldkfjsdlf</p>
再小试一把就OK啦:
$(function () { $(".test").click(function () { alert($(this).text()); }); });
4):多条件选择器:$("p,div,span.menuitem"); 同时选择p 标签,div标签和拥有menuitem样式的span标签。注意选择器表达式中的空格不能多也不能少。容易出错!!
层次选择器:(1)$("div li") 获得div下的所有li 元素(后代 子 子的子的所有的li 标签只要是在本div中的)
(2):$("div>li") 获得div下的直接li子元素。
(3):$(".Testcss+div")获得样式名为Testcss之后的第一个div元素;
(4):$(".Testcss~div") 获得样式名为.Testcss之后所有的div元素;