Jquery 事件
write by 2019-06-11 23:07
1. 介绍¶
CSS
是美容师,那么JS
是动作师,jQuery 是为事件处理特别设计的。
2. 鼠标事件¶
页面对不同访问者的响应叫做事件。事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。
- 在元素上移动鼠标。
- 选取单选按钮
- 双击元素
在事件中经常使用术语"触发"(或"激发")例如: "当您按下按键时触发 keypress 事件"。
2.1 鼠标-click¶
当单击元素时,发生 click 事件。click() 方法触发 click 事件,或规定当发生 click 事件时运行的函数。
语法 触发被选元素的 click 事件:
$(selector).click()
$(selector).click(function)
鼠标点击
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>点击这个段落。</p> </body> <script> $(document).ready(function(){ $("p").click(function(){ alert("段落被点击了。"); }); }); </script> </html>
2.2 鼠标-dbclick¶
当双击元素时,触发 dblclick 事件。dblclick() 方法触发 dblclick 事件,或规定当发生 dblclick 事件时运行的函数。
提示 dblclick 事件也会产生 click 事件。如果这两个事件都被应用于同一个元素,则会产生问题。
语法触发被选元素的 dblclick 事件
$(selector).dblclick()
$(selector).dblclick(function)
鼠标点击
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>段落被双击了。</p> </body> <script> $(document).ready(function(){ $("p").dbclick(function(){ alert("段落被双击了。"); }); }); </script> </html>
2.3 鼠标-mouseenter¶
当鼠标指针穿过(进入)被选元素时,会发生 mouseenter 事件。mouseenter() 方法触发 mouseenter 事件,或添加当发生 mouseenter 事件时运行的函数。
注意:与 mouseover 事件不同,mouseenter 事件只有在鼠标指针进入被选元素时被触发,mouseover 事件在鼠标指针进入任意子元素时也会被触发。参见页面底部演示实例。
提示:该事件通常与 mouseleave 事件一起使用。
语法触发被选元素的 mouseenter 事件
$(selector).mouseenter()
$(selector).mouseenter(function)
鼠标进入
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>鼠标移动到该段落。</p> </body> <script> $(document).ready(function(){ $("p").mouseenter(function(){ $("p").css("background-color","yellow"); }); $("p").mouseleave(function(){ $("p").css("background-color","lightgray"); }); }); </script> </html>
2.4 鼠标-mouseleave¶
当鼠标指针离开被选元素时,会发生 mouseleave 事件。mouseleave() 方法触发 mouseleave 事件,或添加当发生 mouseleave 事件时运行的函数。
注意:与 mouseout 事件不同,mouseleave 事件只有在鼠标指针离开被选元素时被触发,mouseout 事件在鼠标指针离开任意子元素时也会被触发。
区别
mouseout 事件在鼠标离开任意一个子元素及选的元素时触发。 mouseleave 事件只在鼠标离开选取的的元素时触发。
鼠标离开
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>鼠标移动到该段落。</p> </body> <script> $(document).ready(function(){ $("p").mouseenter(function(){ $("p").css("background-color","yellow"); }); $("p").mouseleave(function(){ $("p").css("background-color","lightgray"); }); }); </script> </html>
2.4 鼠标-hove¶
hover() 方法规定当鼠标指针悬停在被选元素上时要运行的两个函数。方法触发 mouseenter 和 mouseleave 事件。
注意: 如果只指定一个函数,则 mouseenter 和 mouseleave 都执行它。
语法
$(selector).hover(inFunction,outFunction)
$( selector ).hover( handlerIn, handlerOut ) 或者 $( selector ).mouseover( handlerIn ).mouseout( handlerOut );
如果只规定了一个函数,则它将会在 mouseover 和 mouseout 事件上运行。 调用:
$(selector).hover(handlerInOut) 或者 $( selector ).on( "mouseover mouseout", handlerInOut );
参数 描述 inFunction 必需。规定 mouseover 事件发生时运行的函数。 outFunction 可选。规定 mouseout 事件发生时运行的函数。
鼠标悬浮
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>鼠标移动到该段落。</p> </body> <script> $(document).ready(function(){ $("p").hover(function(){ $("p").css("background-color","yellow"); },function(){ $("p").css("background-color","pink"); }); }); </script> </html>
3. 键盘事件¶
3.1 键盘-keypress¶
与 keypress 事件相关的事件顺序:
- keydown - 键按下的过程
- keypress - 键被按下
- keyup - 键被松开
- keypress() 方法触发 keypress 事件,或规定当发生 keypress 事件时运行的函数。
keypress 事件与 keydown 事件类似。当按钮被按下时发生该事件。然而,keypress 事件不会触发所有的键(比如 ALT、CTRL、SHIFT、ESC)。请使用 keydown() 方法来检查这些键。
$(selector).keypress(function)
键盘keypress
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> 输入你的名字: <input type="text"> <p>按键的次数: <span>0</span></p> </body> <script> i = 0; $(function(){ $("input").keypress(function(){ $("span").text(i+=1); }); }); </script> </html>
3.2 键盘-keydown¶
与 keydown 事件相关的事件顺序
- keydown - 键按下的过程
- keypress - 键被按下
- keyup - 键被松开
- 当键盘键被按下时发生 keydown 事件。
keydown() 方法触发 keydown 事件,或规定当发生 keydown 事件时运行的函数。
提示:请使用 event.which 属性来返回哪个键盘键被按下。
$(selector).keydown(function)
键盘-keydown
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> 输入你的名字: <input type="text"> </body> <script> i = 0; $(function(){ $("input").keydown(function(){ $(this).css("background-color","yellow"); }); $("input").keyup(function(){ $(this).css("background-color","red"); }); }); </script> </html>
3.3 键盘-keyup¶
keyup 事件相关的事件顺序:
- keydown - 键按下的过程
- keypress - 键被按下
- keyup - 键被松开
- 当键盘键被松开时发生 keyup 事件。
keyup() 方法触发 keyup 事件,或规定当发生 keyup 事件时运行的函数。
$(selector).keyup(function)
code 同上
4. 表单事件¶
4.1 表单-submit¶
当提交表单时,会发生 submit 事件。该事件只适用于 <form>
元素。submit() 方法触发 submit 事件,或规定当发生 submit 事件时运行的函数。
$(selector).submit(function)
表单-submit
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <form action=""> 姓名: <input type="text" name="name" value="name"> <br> 年龄: <input type="text" name="age" value="age"> <br> <input type="submit" value="提交"> </form> </body> <script> $(function () { $("form").submit(function () { alert("提交表单") }) }); </script> </html>
4.2 表单-change¶
当元素的值改变时发生 change 事件(仅适用于表单字段)。change() 方法触发 change 事件,或规定当发生 change 事件时运行的函数。
表单-change
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>在输入框写一些东西,然后按下 enter 键或点击输入框外部。</p> <input type="text" name="" id=""> </body> <script> $(function () { $("input").change(function () { alert("文本已经被修改"); }) }); </script> </html>
4.3 表单-focus¶
当元素获得焦点时(当通过鼠标点击选中元素或通过 tab 键定位到元素时),发生 focus 事件。focus() 方法触发 focus 事件,或规定当发生 focus 事件时运行的函数。
表单-focus
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <style> span { display:none; } </style> </head> <body> <input type="text" name="" id=""> <span>输入你的名字</span> <p>点击输入框获取焦点</p> </body> <script> $(function () { $("input").focus(function () { $("span").css("display","inline").fadeOut(2000); }) }); </script> </html>
4.4 表单-blur¶
当元素失去焦点时发生 blur 事件。blur() 方法触发 blur 事件,或规定当发生 blur 事件时运行的函数。
提示:该方法常与 focus() 方法一起使用。
表单-blur
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <style> span { display:none; } </style> </head> <body> <input type="text" name="" id=""> <span>输入框失去了焦点</span> <p>点击输入框获取焦点</p> </body> <script> $(function () { $("input").blur(function () { $("span").css("display","inline").fadeOut(2000); }); }); </script> </html>
5. 文档/窗口事件¶
5.1 事件-load¶
- load() 方法在 jQuery 版本 1.8 中已废弃。
- load() 方法添加事件处理程序到 load 事件。
- 当指定的元素已加载时,会发生 load 事件。
- 该事件适用于任何带有 URL 的元素(比如图像、脚本、框架、内联框架)以及 window 对象。
- 根据不同的浏览器(Firefox 和 IE),如果图像已被缓存,则也许不会触发 load 事件。
注意:还存在一个名为 load() 的 jQuery AJAX 方法。根据不同的参数决定调用哪个方法。
事件-load
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <script> $(document).ready(function(){ $("img").load(function(){ alert("图片已载入"); }); }); </script> </head> <body> <img src="http://lc-a7isutdu.cn-n1.lcfile.com/21f252311d682f285452/k1.png" alt="图片文字描述" width="304" height="236"> <p><b>注意:</b> 这个事件在不同浏览器效果有所不同,如果图片已缓存该事件则不会触发。</p> </body> <script> $(function () { $("input").blur(function () { $("span").css("display","inline").fadeOut(2000); }); }); </script> </html>
5.2 事件-resize¶
当调整浏览器窗口大小时,发生 resize 事件。resize() 方法触发 resize 事件,或规定当发生 resize 事件时运行的函数。
$(selector).resize(function)
事件-resize
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>窗口重置了 <span>0</span> 次大小。</p> <p>尝试重置窗口大小。</p> </body> <script> x=0; $(function () { $(window).resize(function () { $("span").text(x+=1); }); }); </script> </html>
5.3 事件-scroll¶
当用户滚动指定的元素时,会发生 scroll 事件。
- scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口)。
- scroll() 方法触发 scroll 事件,或规定当发生 scroll 事件时运行的函数。
$(selector).scroll(function)
事件-scroll
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>caimengzhi blog jquery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <p>尝试滚动 div 中的滚动条</p> <div class="cmz" style="border:1px solid black;width:200px;height:100px;overflow:scroll;"> 为了体面的活着。<br> 为了体面的活着。<br> 为了体面的活着。<br> 为了体面的活着。<br> 为了体面的活着。<br> 为了体面的活着。<br> 为了体面的活着。<br> 生活虽一地鸡毛,但是依然要高歌欢进<br> 生活虽一地鸡毛,但是依然要高歌欢进<br> 生活虽一地鸡毛,但是依然要高歌欢进<br> 生活虽一地鸡毛,但是依然要高歌欢进<br> </div> <p>滚动了 <span>0</span> 次。</p> </body> <script> x = 0; $(function () { $(".cmz").scroll(function () { $("span").text(x += 1); }); }); </script> </html>
5.4 事件-unload¶
- unload() 方法在 jQuery 版本 1.8 中被废弃,在 3.0 版本被移除。
- Firefox 与 Chrome 会阻止弹窗,所以没办法看到效果。
- 当用户离开页面时,会发生 unload 事件。
- 当发生以下情况下,会触发 unload 事件:
- 点击某个离开页面的链接在地址栏中键入了新的 URL,使用前进或后退按钮,关闭浏览器窗口,重新加载页面
- unload() 方法规定当 unload 事件发生时会发生什么。
- unload() 方法只应用于 window 对象。