林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
jQuery,顾名思义,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库。jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。$(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有段落 $("p.test").hide() - 隐藏所有 class="test" 的段落 $("#test").hide() - 隐藏所有 id="test" 的元素
通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。
jQuery的基本设计和主要用法,就是"选择某个网页元素,然后对其进行某种操作"。这是它区别于其他函数库的根本特点。使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$),然后得到被选中的元素。$(document) //选择整个文档对象 $(‘#myId‘) //选择ID为myId的网页元素 $(‘div.myClass‘) // 选择class为myClass的div元素 $(‘input[name=first]‘) // 选择name属性等于first的input元素 也可以是jQuery特有的表达式: $(‘a:first‘) //选择网页中第一个a元素 $(‘tr:odd‘) //选择表格的奇数行 $(‘#myForm :input‘) // 选择表单中的input元素 $(‘div:visible‘) //选择可见的div元素 $(‘div:gt(2)‘) // 选择所有的div元素,除了前三个 $(‘div:animated‘) // 选择当前处于动画状态的div元素
只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。普通的dom对象一般可以通过$()转换成jquery对象。如:$(document.getElementById(”msg”))则为jquery对象,可以使用jquery的方法。由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。如:$(”#msg”)[0],$(”div”).eq(1)[0],$(”div”).get()[1],$(”td”)[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下几种写法都是正确的:
$(”#msg”).html(); $(”#msg”)[0].innerHTML; $(”#msg”).eq(0)[0].innerHTML; $(”#msg”).get(0).innerHTML;
对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个<div>元素的内容。有如下两种方法:
$(”div”).eq(2).html();//调用jquery对象的方法 $(”div”).get(2).innerHTML;//调用dom的方法属性
$(”#msg”).html();//返回id为msg的元素节点的html内容。 $(”#msg”).html(”<b>new content</b>”); //将“<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content $(”#msg”).text();//返回id为msg的元素节点的文本内容。 $(”#msg”).text(”<b>new content</b>”); //将“<b>new content</b>” 作为普通文本串写入id为msg的元素节点内容中,页面显示<b>new content</b> $(”#msg”).height();//返回id为msg的元素的高度 $(”#msg”).height(”300″);//将id为msg的元素的高度设为300 $(”#msg”).width();//返回id为msg的元素的宽度 $(”#msg”).width(”300″);//将id为msg的元素的宽度设为300 $(”input”).val(”);//返回表单输入框的value值 $(”input”).val(”test”);//将表单输入框的value值设为test $(”#msg”).click();//触发id为msg的元素的单击事件 $(”#msg”).click(fn);//为id为msg的元素单击事件添加函数同样blur,focus,select,submit事件都可以有着两种调用方法。
如果选中多个元素,jQuery提供过滤器,可以缩小结果集:
$(‘div‘).has(‘p‘); // 选择包含p元素的div元素 $(‘div‘).not(‘.myClass‘); //选择class不等于myClass的div元素 $(‘div‘).filter(‘.myClass‘); //选择class等于myClass的div元素 $(‘div‘).first(); //选择第1个div元素 $(‘div‘).eq(5); //选择第6个div元素有时候,我们需要从结果集出发,移动到附近的相关元素,jQuery也提供了在DOM树上的移动方法:
$(‘div‘).next(‘p‘); //选择div元素后面的第一个p元素 $(‘div‘).parent(); //选择div元素的父元素 $(‘div‘).closest(‘form‘); //选择离div最近的那个form父元素 $(‘div‘).children(); //选择div的所有子元素 $(‘div‘).siblings(); //选择div的同级元素
$(”#msg”).css(”background”);//返回元素的背景颜色 $(”#msg”).css(”background”,”#ccc”)//设定元素背景为灰色 $(”#msg”).height(300); $(”#msg”).width(”200″);//设定宽高 $(”#msg”).css({ color: “red”, background: “blue” });//以名值对的形式设定样式 $(”#msg”).addClass(”select”);//为元素增加名称为select的class $(”#msg”).removeClass(”select”);//删除元素名称为select的class $(”#msg”).toggleClass(”select”);//如果存在(不存在)就删除(添加)名称为select的class
$(‘div‘).find(‘h3‘).eq(2).html(‘Hello‘);
$(‘div‘) //找到div元素 .find(‘h3‘) //选择其中的h3元素 .eq(2) //选择第3个h3元素 .html(‘Hello‘); //将它的内容改为Hello这是jQuery最令人称道、最方便的特点。它的原理在于每一步的jQuery操作,返回的都是一个jQuery对象,所以不同操作可以连在一起。
$(‘div‘) .find(‘h3‘) .eq(2) .html(‘Hello‘) .end() //退回到选中所有的h3元素的那一步 .eq(0) //选中第一个h3元素 .html(‘World‘); //将它的内容改为World
包括方法也可以连写:
$(”p”).click(function(){alert($(this).html())}) .mouseover(function(){alert(’mouse over event’)}) .each(function(i){this.style.color=[‘#f00‘,‘#0f0‘,‘#00f‘][ i ]});
对于jquery返回的集合内容无需我们自己循环遍历并对每个对象分别做处理,jquery已经为我们提供的很方便的方法进行集合的处理。
包括两种形式:
$(”p”).each(function(i){this.style.color=[‘#f00‘,‘#0f0‘,‘#00f‘][ i ]}) //为索引分别为0,1,2的p元素分别设定不同的字体颜色。 $(”tr”).each(function(i){this.style.backgroundColor=[‘#ccc‘,‘#fff‘][i%2]}) //实现表格的隔行换色效果 $(”p”).click(function(){alert($(this).html())}) //为每个p元素增加了click事件,单击某个p元素则弹出其内容
$(‘div‘).insertAfter(‘p‘);
$(‘p‘).after(‘div‘);表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。
.insertAfter()和.after():在现存元素的外部,从后面插入元素 .insertBefore()和.before():在现存元素的外部,从前面插入元素 .appendTo()和.append():在现存元素的内部,从后面插入元素 .prependTo()和.prepend():在现存元素的内部,从前面插入元素
$(‘<p>Hello</p>‘); $(‘<li class="new">new list item</li>‘); $(‘ul‘).append(‘<li>list item</li>‘);
$.trim() 去除字符串两端的空格。 $.each() 遍历一个数组或对象。 $.inArray() 返回一个值在数组中的索引位置。如果该值不在数组中,则返回-1。 $.grep() 返回数组中符合某种标准的元素。 $.extend() 将多个对象,合并到第一个对象。 $.makeArray() 将对象转化为数组。 $.type() 判断对象的类别(函数对象、日期对象、数组对象、正则对象等等)。 $.isArray() 判断某个参数是否为数组。 $.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。 $.isFunction() 判断某个参数是否为函数。 $.isPlainObject() 判断某个参数是否为用"{}"或"new Object"建立的对象。 $.support() 判断浏览器是否支持某个特性。
jQuery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。
$(”#msg”).click(function(){alert(”good”)})//为元素添加了单击事件 $(”p”).click(function(i){this.style.color=[‘#f00‘,‘#0f0‘,‘#00f‘][ i ]})
$(”tr”).hover(function(){ $(this).addClass(”over”); }, function(){ $(this).addClass(”out”); });
(2)ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
$(document).ready(function(){alert(”Load Success”)})
$(”p”).toggle(function(){ $(this).addClass(”selected”); },function(){ $(this).removeClass(”selected”); });
$(”p”).trigger(”click”);//触发所有p元素的click事件(5)bind(eventtype,fn),unbind(eventtype): 事件的绑定与反绑定
$(”p”).bind(”click”,function(){alert($(this).text());});//为每个p元素添加单击事件 $(”p”).unbind();//删除所有p元素上的所有事件 $(”p”).unbind(”click”)//删除所有p元素上的单击事件当然,点击事件也可以这么写:
$(‘p‘).click(function(){ alert(‘Hello‘); });使用.bind()可以更灵活地控制事件,比如为多个事件绑定同一个函数:
$(‘input‘).bind( ‘click change‘, //同时绑定click和change事件 function() { alert(‘Hello‘); } );
$("p").one("click", function() { alert("Hello"); //只运行一次,以后的点击不会运行 });
$("p").click(function(e) { alert(e.type); // "click" });这个事件对象有一些很有用的属性和方法:
event.pageX 事件发生时,鼠标距离网页左上角的水平距离 event.pageY 事件发生时,鼠标距离网页左上角的垂直距离 event.type 事件的类型(比如click) event.which 按下了哪一个键 event.data 在事件对象上绑定数据,然后传入事件处理函数 event.target 事件针对的网页元素 event.preventDefault() 阻止事件的默认行为(比如点击链接,会自动打开新页面) event.stopPropagation() 停止事件向上层元素冒泡
$(‘a‘).click(function() { if ($(this).attr(‘href‘).match(‘evil‘)) { //如果确认为有害链接 e.preventDefault(); //阻止打开 $(this).addClass(‘evil‘); //加上表示有害的class } });
jquery事件
方法 | 描述 |
向匹配元素附加一个或更多事件处理器 | |
触发、或将函数绑定到指定元素的 blur 事件 | |
触发、或将函数绑定到指定元素的 change 事件 | |
触发、或将函数绑定到指定元素的 click 事件 | |
触发、或将函数绑定到指定元素的 double click 事件 | |
向匹配元素的当前或未来的子元素附加一个或多个事件处理器 | |
移除所有通过 live() 函数添加的事件处理程序。 | |
触发、或将函数绑定到指定元素的 error 事件 | |
返回 event 对象上是否调用了 event.preventDefault()。 | |
相对于文档左边缘的鼠标位置。 | |
相对于文档上边缘的鼠标位置。 | |
阻止事件的默认动作。 | |
包含由被指定事件触发的事件处理器返回的最后一个值。 | |
触发事件的 DOM 元素。 | |
该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。 | |
描述事件的类型。 | |
指示按了哪个键或按钮。 | |
触发、或将函数绑定到指定元素的 focus 事件 | |
触发、或将函数绑定到指定元素的 key down 事件 | |
触发、或将函数绑定到指定元素的 key press 事件 | |
触发、或将函数绑定到指定元素的 key up 事件 | |
触发、或将函数绑定到指定元素的 load 事件 | |
触发、或将函数绑定到指定元素的 load 事件 | |
触发、或将函数绑定到指定元素的 mouse down 事件 | |
触发、或将函数绑定到指定元素的 mouse enter 事件 | |
触发、或将函数绑定到指定元素的 mouse leave 事件 | |
触发、或将函数绑定到指定元素的 mouse move 事件 | |
触发、或将函数绑定到指定元素的 mouse out 事件 | |
触发、或将函数绑定到指定元素的 mouse over 事件 | |
触发、或将函数绑定到指定元素的 mouse up 事件 | |
向匹配元素添加事件处理器。每个元素只能触发一次该处理器。 | |
文档就绪事件(当 HTML 文档就绪可用时) | |
触发、或将函数绑定到指定元素的 resize 事件 | |
触发、或将函数绑定到指定元素的 scroll 事件 | |
触发、或将函数绑定到指定元素的 select 事件 | |
触发、或将函数绑定到指定元素的 submit 事件 | |
绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。 | |
所有匹配元素的指定事件 | |
第一个被匹配元素的指定事件 | |
从匹配元素移除一个被添加的事件处理器 | |
从匹配元素移除一个被添加的事件处理器,现在或将来 | |
触发、或将函数绑定到指定元素的 unload 事件 |
方法 | 描述 |
对被选元素应用“自定义”的动画 | |
对被选元素移除所有排队的函数(仍未运行的) | |
delay() | 对被选元素的所有排队函数(仍未运行)设置延迟 |
dequeue() | 运行被选元素的下一个排队函数 |
淡入被选元素至完全不透明 | |
淡出被选元素至完全不透明 | |
把被选元素减弱至给定的不透明度 | |
隐藏被选的元素 | |
queue() | 显示被选元素的排队函数 |
显示被选的元素 | |
通过调整高度来滑动显示被选元素 | |
对被选元素进行滑动隐藏和滑动显示的切换 | |
通过调整高度来滑动隐藏被选元素 | |
停止在被选元素上运行动画 | |
对被选元素进行隐藏和显示的切换 |
@ jQuery文档操作方法
这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html()。
方法 | 描述 |
向匹配的元素添加指定的类名。 | |
在匹配的元素之后插入内容。 | |
向匹配的元素内部追加内容。 | |
向匹配的元素内部追加内容。 | |
设置或返回匹配元素的属性和值。 | |
在每个匹配的元素之前插入内容。 | |
创建匹配元素集合的副本。 | |
从 DOM 中移除匹配元素集合。 | |
删除匹配的元素集合中所有的子节点。 | |
检查匹配的元素是否拥有指定的类。 | |
设置或返回匹配的元素集合中的 HTML 内容。 | |
把匹配的元素插入到另一个指定的元素集合的后面。 | |
把匹配的元素插入到另一个指定的元素集合的前面。 | |
向每个匹配的元素内部前置内容。 | |
向每个匹配的元素内部前置内容。 | |
移除所有匹配的元素。 | |
从所有匹配的元素中移除指定的属性。 | |
从所有匹配的元素中删除全部或者指定的类。 | |
用匹配的元素替换所有匹配到的元素。 | |
用新内容替换匹配的元素。 | |
设置或返回匹配元素的内容。 | |
从匹配的元素中添加或删除一个类。 | |
移除并替换指定元素的父元素。 | |
设置或返回匹配元素的值。 | |
把匹配的元素用指定的内容或元素包裹起来。 | |
把所有匹配的元素用指定的内容或元素包裹起来。 | |
将每一个匹配的元素的子内容用指定的内容或元素包裹起来。 |
@ jQuery 属性操作方法
下面列出的这些方法获得或设置元素的 DOM 属性。
这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html()。
方法 | 描述 |
向匹配的元素添加指定的类名。 | |
设置或返回匹配元素的属性和值。 | |
检查匹配的元素是否拥有指定的类。 | |
设置或返回匹配的元素集合中的 HTML 内容。 | |
从所有匹配的元素中移除指定的属性。 | |
从所有匹配的元素中删除全部或者指定的类。 | |
从匹配的元素中添加或删除一个类。 | |
设置或返回匹配元素的值。 |
@ jQuery CSS 操作函数
下面列出的这些方法设置或返回元素的 CSS 相关属性。
CSS 属性 | 描述 |
设置或返回匹配元素的样式属性。 | |
设置或返回匹配元素的高度。 | |
返回第一个匹配元素相对于文档的位置。 | |
返回最近的定位祖先元素。 | |
返回第一个匹配元素相对于父元素的位置。 | |
设置或返回匹配元素相对滚动条顶部的偏移。 | |
设置或返回匹配元素相对滚动条左侧的偏移。 | |
设置或返回匹配元素的宽度。 |
版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处http://blog.csdn.net/evankaka
原文:http://blog.csdn.net/evankaka/article/details/48769765