《锋利的jQuery》笔记-jQuery部分

//DOM对象和jQuery对象

DOM:Document Object Model:文档对象模型

DOM对象表示: var variable;

可以通过JavaScript中的getElementById 或者getElementsByTagName来获取元素节点。

DOM对象可以使用js中的方法。eg:  var ObjHtml=document.getElementById("id").innerHtml;

jQuery对象:就是通过jQuery包装DOM对象后产生的对象。

jQuery对象表示:ver $variable;

jQuery对象可以使用jQuery中的方法。注意innerHtml方法是JS中的方法,Jquery对象不能使用。

$("#id").html();  //这行代码产生的结果等同于  document.getElementById("id").innerHtml;

一定要注意哪些方法是JS中的方法,哪些方法是JQuery中的方法。DOM对象只能使用JS中的方法,jQuery对象只能使用jQuery中的方法。

如果串用会报错的。

//DOM对象和jQuery对象的相互转换:

1,jQuery对象转DOM对象:

var $cr=$("#cr");//待转jQuery对象

var cr=$cr[0];  //方法一:jQuery对象是一个数组对象,可以通过[index]的方法得到相应的DOM对象。DOM对象

var cr=$cr.get(0);//方法二:这种方法是jQuery本身提供的,通过get(index)方法得到相应的DOM对象。

2,DOM对象转jQuery对象:

var cr=document.getElementById("cr");//DOM对象

var $cr=$(cr);//jQuery对象

注意:平时使用的jQuery对象都是通过$()函数制造出来的,$()函数就是一个jQuery对象的制造工厂。

//jQuery选择器

1,继承了CSS选择器的风格。

2,jQuery选择器分类

|--基本选择器

|--层次选择器

|--过滤选择器

|--基本过滤

|--内容过滤

|--可见性过滤

|--属性过滤

|--子元素过滤

|--表单对象属性过滤

|--表单选择器

-详细说明:

(1)基本选择器是jQuery中最新常用的选择器,也是最简单的,它通过id,class和标签名来查找DOM元素。$("#id")、$(".cls")、$("p")

(2)层次选择器通过DOM元素之间的层次关系来获取特定元素,例如:后代元素、子元素、相邻元素和兄弟元素。

|--后代元素:$("ancestor descendant")    //eg:$("div span")    //选取<div>里的所有的span元素

|--子元素    :$("parent>child")            //eg:$("div>span")    //选取<div>元素下元素名是<span>的子元素

|--相邻元素:$("prev + next")            //eg:$(".one + div")//获取class为one的下一个div元素

|--兄弟元素:$("prev~siblings")            //eg:$("#two~div")    //获取id为two元素的所有div兄弟元素

(3)过滤选择器

a:基本过滤选择器:格式:$("[标签名][选择器]")                      举例:

:first                    :header                      $("div:first")//:first选择器

:last                    :animated                    $("div:gt(3)")//:gt()选择器

:not(selector)            :eq(index)

:gt(index)                :lt(index)

:even//索引是奇数的所有元素    :odd

b:内容过滤选择器:格式:$("[标签名][选择器]")

:contains(text)//选取含有文本内容为text的元素        :empty    //选取不包含子元素或者文本的空元素

:has(selector)//选取含有选择器所匹配的元素的元素        :parent    //选取含有子元素或者文本的元素

c:可见性过滤选择器

:hidden//选取所有不可见的元素

:visible//选取所有可见的元素

注意:在可加性选择器中,需要注意选择器:hidden,它不仅包括样式属性display为“none”的元素,也包括文本隐藏域(<input type="hidden">)

和visibility:hidden之类的元素。

d:属性过滤选择器

[attribute]                    [attribute*=value]

[attribute=value]        [selector1][selector2][selectorN]//用属性选择器合并成一个复合属性选择器

[attribute!=value]

[attribute^=value]

[attribute$=value]

e:子元素过滤选择器

:nth-child(index/even/odd/equation)    //选取每个父元素下的第index个子元素或者奇偶元素(index从1开始)

:first-child                        //选取每个父元素的第一个子元素   $("ul li:first-child")//选取每个ul下的第一个li元素

:last-child

:only-child                            //如果某个子元素是其父元素中的唯一一个子元素,那么将会被匹配。

f:表单对象属性过滤选择器:此选择器主要是对所选择的表单元素进行过滤,比如选择被选中的下拉框,多选框等等。

:enabled    //选取所有可用元素     $("#form1:enable")                //选取id为form1的表单内的所有可用元素。

:disabled    //选取所有不可用元素

:checked    //选取所有被选中的元素(单选框、复选框) $("input:checked")  //所有被选中的<input>的元素

:selected    //选取所有被选中的选项元素。

(4)表单选择器:为了更加灵活地操作表单。

:input        //选取所有的<input>、<textarea>、<select>、<button>元素

:text        //选取所有的单行文本框

:password    //选取所有的密码框

:radio        //选取所有的单选框

:checkbox    //选取所有的多选框

:submit        //选取所有的提交按钮

:image        //选取所有的图像按钮

:reset        //选取所有的充值按钮

:file        //选取所有的上传域

:button        //选取所有的按钮

:hidden        //选取所有的不可见元素

***选择器中的注意事项***

1、选择器中含有特殊符号的注意事项

(1)含有“.”、“#”、“(”、“)”、“[”、“]”

例如:<div id="id#b">bb</div>   获取方式:$(#id\\#b)  要转移特殊字符"#",转义符号为\\

<div id="id[1]">cc</div>  获取方式:$(#id\\[1\\])

(2)属性选择器的引号问题

例如:$(input[name=‘type‘])

2、选择器中含有空格的注意事项

例如:var $t_a=$(".test :hidden");//带空格,选取class为test的元素里面的隐藏元素。实为test后代中隐藏的元素

var $t_b=$(".test:hidden");//不带空格,选取class为test并隐藏的元素

//jQuery中的事件

1.事件绑定

bind(type,data,fn)

|--type:事件类型,包括:blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup

|--data:可选参数,作为event.data属性值传递给事件对象的额外数据对象。

|--fn:用来绑定的处理函数。

例如:$(function(){

$("#panel h5.head").bind("mouseover",function(){

$(this).next("div.content").show();

});

$("#panel h5.head").bind("mouseout",function(){

$(this).next("div.content").hide();

});

})

简写形式如下:

$(function(){

$("#panel h5.head").mouseover(function(){

$(this).next("div.content").show();

});

$("#panel h5.head").mouseout(function(){

$(this).next("div.content").hide();

});

})

2.合成事件

jQuery有两个合成事件,hover()方法和toggle()方法,这两个方法都是jQuery自定义的方法。

(1)hover()方法:模拟光标悬停事件,当光标移动到元素上时,会触发指定的第一个函数(enter);当光标移除这个元素时,会触发指定的第二个函数(leave)。

语法结构:hover(enter,leave);

将上面的代码用hover()方法替换如下:

$(function(){

$("#panel h5.head").hover(function(){

$(this).next("div.content").show();

},function(){

$(this).next("div.content").hide();

});

})

(2)toggle()方法:用于模拟鼠标连续单击事件。第一次单击触发第一个函数;第二次单击触发第二个函数,,重复对几个函数的轮番调用。

语法结构:toggle(fn1,fn2,,,,fnN);

将上面的代码用hover()方法替换如下:

$(function(){

$("#panel h5.head").toggle(function(){

$(this).next(div.content).show();

},function(){

$(this).next(div.content).hide();

});

})

3.事件冒泡

(1)解释冒泡现象:

用例子来解释冒泡事件:

<script type="text/javascript">

$(function(){

$("span").click(function(){

var span_txt=$("#msg").html()+"<p>内存元素span被单击</p>";

$("#msg").html(span_txt);

});

$("#content").bind("click",function(){

var div_txt=$("#msg").html()+"<p>外层元素div被单击</p>";

$("#msg").html(div_txt);

})

$("body").bind("click",function(){

var body_txt=$("#msg").html()+"<p>body被单击</p>";

$("#msg").html(body_txt);

})

})

</script>

<div id="content">

<span>内层span元素</span>

</div>

<div id="msg"></div>

冒泡现象:当单击内部<span>元素时,就会触发外部<div>元素和<body>元素上绑定的的click事件。这是由冒泡事件引起的。

元素的click事件会按照以下顺序冒泡:

(1)<span>

(2)<div>

(3)<body>

之所以称为冒泡,是因为时间会按照DOM的层次结构像水泡一样不断向上直至顶端。

(2)事件冒泡引发的问题:

|--事件对象:

$("element").bind("click",function(event){  //event:事件对象

});

|--停止事件冒泡:

停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行。在jQuery中提供了stopPropagation()方法来停止事件冒泡。

上述例子停止冒泡代码如下:

$("span").click(function(event){

var span_txt=$("#msg").html()+"<p>内存元素span被单击</p>";

$("#msg").html(span_txt);

event.stopPropagation();//return false;

});

$("#content").bind("click",function(event){

var div_txt=$("#msg").html()+"<p>外层元素div被单击</p>";

$("#msg").html(div_txt);

event.stopPropagation();//return false;

})

|--阻止默认行为:网页中的元素有自己默认的行为,比如单击超链接后回跳转,单击“提交”按钮后表单会提交,有时需要阻止元素的默认行为。

在jQuery中,提供了preventDefault()方法来阻止元素的默认行为。

例如:

$("#sub").bind("click",function(evet){

$("#msg").html("hello world");

event.preventDefault();//阻止表单自动提交行为

//或者用 return false;来代替event.preventDefault();

//return false;也可以阻止表单提交,也可以阻止冒泡事件。

})

4.事件对象的属性

(1)event.type();            //获取到事件的类型

(2)event.preventDefault();    //阻止元素默认行为

(3)event.stopPropagation();    //阻止时间的冒泡

(4)event.target();            //获取到触发事件的元素

(5)event.relatedTarget();    //访问相关元素

(6)event.pageX();/even.pageY()//获取到光标相对于页面的x坐标和y坐标

(7)event.which();            //在鼠标单击事件中获取到鼠标的左中右键,在键盘事件中获取到键盘的按键。

(8)event.metaKey();            //键盘事件中获取<ctrl>按键

(9)event.originalEvent();    //指向原始的事件对象。

5移除事件

unbind([type][,data]);        //[type]:事件类型       [data]:要移除的函数名

(1)如果没有参数,则删除所有绑定的事件

(2)如果提供了事件类型作为参数,则只删除该类型的绑定事件

(3)如果提供了函数名(第二个参数),则只删除该函数。

对于只需要触发一次,随后就要立即解除绑定的情况,可以使用one()方法,这个方法与bind()方法类似。

one(type,[data],fn);

6.模拟操作

trigger(type [,data])方法有两个操作,第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据。以数组形式传递。

$("#btn").trigger("click");

执行默认操作:trigger()方法触发事件后,会执行浏览器默认的操作。例如:

$("input").trigger("focus");//此行代码不仅会触发<input>元素绑定的focus事件,也会使<input>元素本身得到焦点。

如果只想触发绑定的focus事件,而不想执行浏览器默认操作,可以使用jQuery中另一个类似的方法——triggerHandler()方法。

$("input").triggerHandle("focus");//只触发绑定的focus事件,不会得到焦点。

7.其他用法

(1)绑定多个事件类型

$(function(){

$("#div").bind("mouseover mouseout",function(){

$(this).toggleClass("over");

})

})

(2)添加事件命名空间,便于管理

$(function(){

$("div").bind("click.plugin",function(){

$("body").append("<p>click事件</p>");

});

$("div").bind("mouseover.plugin",function(){

$("body").append("<p>mouseover事件</p>");

});

$("div").bind("dblclick",function(){

$("body").append("<p>dblclick事件</p>");

});

$("#button").click(function(){

$("div").unbind(".plugin");//等价于:$("div").unbind("click").unbind("mouseover");

})

})

在所绑定的事件类型后面添加命名空间,这样在删除事件时只需要指定命名空间即可。

单击<button>后,“plugin”的命名空间被删除,而不在“plugin”的命名空间的“dblclick”事件依然存在。

(3)相同事件名称,不同命名空间执行方法

$(funtion(){

$("div").bind("click",function(){

$("body").append("<p>click事件</p>");

});

$("div").bind("click.plugin",function(){

$("body").append("<p>click事件</p>");

});

$("#btn").click(function(){

$("div").trigger("click!");//注意click后面的感叹号,其作用是不包含在命名空间中的click方法。

})

})

//jQuery中的动画

jQuery中的任何动画效果都可以指定3种速度参考:slow:600ms、normal:400ms、fast:200ms

1.show()方法和hide()方法 //会同时改变内容的高度、宽度、不透明度

show()方法和hide()方法让元素动起来

如果上述两个方法不带参数,意思是将匹配的元素立刻隐藏或显示。

如果希望在调用时慢慢显示或隐藏,可以为show和hide方法指定速度参数。

例:$("div").show("slow");

$("div").show(1000);

$("div").hide("fast");

2.fadeIn()方法和fadeOut()方法//只改变元素的不透明度

fadeOut()方法会在指定的一段时间内降低元素的不透明度,直到元素消失。

fadeIn()方法则相反。

3.slideUp()方法和slideDown()方法//只会改变元素的高度

slideUp();//元素将由下到上缩短隐藏

slideDown();//元素将由上到下延伸显示

4.自定义的动画animate()方法

(1)语法结构:animate(params,speed,callback);

参数说明:params:一个包含样式属性及值的映射,比如{property1:"value1",property2:"value2",...}

speed:速度参数,可选

callback:在动画完成时执行的函数,可选。

(2)累加累减动画

function(){

$("#panel").animate({left:‘+=500px‘},3000);

});

(3)多重动画

|--同时执行多个动画:向右滑动并同时向下滑动,并同时变大。

$("#panel").click(function(){

$("#panel").animate({left:‘500px‘,top:‘300px‘,height:‘200px‘,width:‘200px‘},300);

});

|--按顺序执行多个动画:按顺序执行动画

$("#panel").click(function(){

$(this).animate({left:‘500px‘},300);

$(this).animate({top:‘300px‘},300);

$(this).animate({height:‘200px‘},300);

$(this).animate({width:‘200px‘},300);

});

(4)综合动画和动画回调函数

$("#panel").css("opacity","0.5");

$("#panel").click(function(){

$(this).animate({left:‘400px‘,height:‘200px‘,opacity:‘1‘},3000)

.animate({top:‘200px‘,width:‘200px‘},3000)

.fadeOut("slow").fadeIn("fast").animate({top:‘0px‘,width:‘100px‘},3000)

.animate({left:‘0px‘,height:‘100px‘,opacity:‘0.5‘},3000,function(){

alert("hahahaha");

});

5.停止动画和判断动画是否处于动画状态

(1)停止元素的动画

stop([clearQueue][,gotoEnd]);//两个参数都是布尔型的

|--参数clearQueue代表是否要清空未执行完的动画队列;true:清空

|--参数gotoEnd代表是否直接将正在执行的动画跳转到末状态。true:跳到末状态

(2)判断元素是否处于动画状态

if(!$(element).is("animated")){//判断元素是否处于动画状态

//如果没有进行的动画,则添加新动画。

}

6.其他的动画方法

(1)toggle(speed,[callback]);//此方法可以切换元素的可见状态。如果元素时可见的,则切换为隐藏;如果元素时隐藏的,则切换为可见。

eg://使用toggle()方法来代替hide()方法和show()方法

$("#panel h5.head").click(function(){

$(this).next("div.content").toggle();

})

相当于:

$("#panel h5.head").click(function(){

$(this).next("div.content").hide();

},function(){

$(this).next("div.content").show();

})

(2)slideToggle(speed,[callback]);//此方法通过高度变化来切换匹配元素的可见性。这个动画效果只调整元素的高度。

(3)fadeTo(speed,opacity,[callback]);//此方法可以把元素的不透明度以渐进的方式调整到制定的值。这个动画只调整元素的不透明度,即匹配的元素的高度和宽度不会发生变化。

7.总结

|--

hide()和show()            //同时修改多个样式属性即高度、宽度和不透明度

toggle()                //用来代替hide()方法和show()方法,所以会同时修改多个样式属性即高度、宽度和不透明度

fadeIn()和fadeOut()        //只改变不透明度

fadeTo()                //只改变不透明度

slideUp()和slideDown()    //只改变高度

slideToggle()            //用来代替slideUp()和slideDown(),所以只改变高度

animate()                //属于自定义动画的方法,以上各种动画方法实质内部都调用了animate()方法。此外,直接使用animate()方法还能自定义其他的样式属性。例如:left、marginLeft、scrollTop

|--动画队列:

(1)一组元素上的动画效果:

当在一个animate()方法中应用多个属性时,动画是同时发生的。

当以链式的写法应用动画时,动画是按照顺序发生的。

(2)多组元素上的动画效果:

默认情况下,动画都是同时发生的。

当以回调的形式应用动画方式时,动画是按照回调顺序执行的。

//表单应用

1.表单应用

(1)单行文本框应用:获取和失去焦点改变样式

(2)多行文本框应用

时间: 2024-11-06 07:31:59

《锋利的jQuery》笔记-jQuery部分的相关文章

jQuery笔记总结

来源于:http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先,来了解一下jQuery学习的整体思路 第一节 jQuery初步认知 jQuery概述 JQuery概念 javascript概念 基于Js语言的API和语法组织逻辑,通过内置window和document对象,来操作内存中的DOM元素 JQuery概念 基于javascript的,同上,提高了代码的效率 j

初学JQuery笔记

extend()函数是jQuery的基础函数之一,作用是扩展现有的对象 <script type="text/javascript" src="jquery-1.5.2.js"></script> <script> obj1 = { a : 'a', b : 'b' }; obj2 = { x : { xxx : 'xxx', yyy : 'yyy' }, y : 'y' }; $.extend(true, obj1, obj2)

前端:jQuery笔记

前端:jQuery笔记 此系列文章乃是学习jQuery的学习笔记. Asp.net MVC Comet推送 摘要: 一.简介 在Asp.net MVC实现的Comet推送的原理很简单. 服务器端:接收到服务器发送的AJAX请求,服务器端并不返回,而是将其Hold住,待到有东西要通知客户端时,才将这个请求返回. 客户端:请求异步Action,当接收到一个返回时,立即又再发送一个. 缺点:会长期占用一个Asp...阅读全文 posted @ 2015-02-10 12:01 逆心 阅读(1072)

jquery笔记之属性选择器 查找以某种条件开头的页面元素

jquery笔记之属性选择器 查找以某种条件开头的页面元素 转载:http://www.blogbus.com/amyqiong-logs/78340326.html $("div[id]")                查找所有含有 id 属性的div元素. $("div[id='ajaxa']")        查找 id 为 ajaxa 的 div 元素. $("div[id!='ajaxa']")       查找 id 不为 ajax

JQuery 笔记 $.load get post ajax

1. load  从服务器上获取静态文件 <div id="resText"></div> $('resText').load('test.html', {a:1, b:2}, function(responseText, textStatus, XMLHttpRequest){ // code here }) 2. get $.get(url [,data] [,callback] [,type]){ // url // data = {a:1, ...} /

JavaScript学习笔记——jquery中html()、text()、val()的区别

.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值. 这三个方法功能上的对比 .html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的HTML内容(包括其Html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的"value"值.其中.和.text()方法不能使用在表单元素上,而.val()

jQuery学习笔记——jQuery基础核心

代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能函数的时候可以这么写: $(function () {}); //执行一个匿名函数 $(‘#box’);//进行执行的ID元素选择 $(‘#box’).css(‘color’, ‘red’);//执行功能函数由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:jQ

jQuery学习笔记——jQuery常规选择器

一.简单选择器在使用 jQuery 选择器时,我们首先必须使用“$()”函数来包装我们的 CSS 规则.而CSS 规则作为参数传递到 jQuery 对象内部后,再返回包含页面中对应元素的 jQuery 对象.随后,我们就可以对这个获取到的 DOM 节点进行行为操作了.#box {//使用 ID 选择器的 CSS 规则color:red;//将 ID 为 box 的元素字体颜色变红}在 jQuery 选择器里,我们使用如下的方式获取同样的结果:$('#box').css('color', 'red

jquery源码笔记(四): jquery.extend=jquery.fn.extend

extend()  方法,   合并两个或更多对象的属性到第一个对象中,jQuery后续的大部分功能都通过该函数扩展, 当参数只有一个对象时,则将对象的属性添加到jQuery对象中. jquery 中扩展插件的形式:  2种方法 $.extend({ //扩展工具方法 aaa:function(){ alert(10); }, bbb:function(){ alert(20) } }); $.fn.extend({ //扩展jquery实例方法 aaa:function(){ alert("f

jQuery笔记——UI

jQuery UI 的官网网站为:http://jqueryui.com/,我们下载最新版本的即可,使用JQueryUI中的样式比我们使用原生的HTML要好看,还会有一些封装好的特效,JQueryUI一般都是使用在我们自己设置的js中 里面目录结构如下: 1.css,包含与 jQuery UI 相关的 CSS 文件 2.js,包含 jQuery UI 相关的 JavaScript 文件 3.Development-bundle,包含多个不同的子目录:demos(jQuery UI 示例文件).d