jQuery常用API(八)——jQuery事件

8.jQuery事件

8.1 jQuery事件注册

<body>
    <div></div>
    <script>
        $(function() {
            // 1. 单个事件注册
            $("div").click(function() {
                $(this).css("background", "purple");
            });
            $("div").mouseenter(function() {
                $(this).css("background", "skyblue");
            });
        })
    </script>
</body>

 

单个事件注册有时不方便,想要多个事件注册将这些单个事件注册连起来:

8.2 jQuery事件处理

1.事件处理on()绑定事件

on()方法在匹配元素上绑定一个或多个事件的事件处理函数

语法:

on(eve,[sel],[data],fn)

1.events:一个或多个用空格分隔的事件类型,如“click”或“keydown”。

2.selector:元素的子元素选择器。

      $(function() {
            //  on可以绑定1个或者多个事件处理程序
            // $("div").on({
            //     mouseenter: function() {
            //         $(this).css("background", "skyblue");
            //     },
            //     click: function() {
            //         $(this).css("background", "purple");
            //     }
            // });
            
  
            

这些事件可以使用对象形式封装

on()方法优势1:可以绑定多个事件,多个处理事件处理程序

如果事件处理程序相同

 $("div").on("mouseenter mouseleave", function() {
                $(this).toggleClass("current");
            });
  //鼠标经过、离开触发function函数

on()方法优势2:可以事件委派操作。事件委派的定义是:把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。

            // click 是绑定在ul 身上的,但是 触发的对象是 ul 里面的小li
            // $("ul li").click();
            $("ul").on("click", "li", function() {
                alert(11);
            });//冒泡到父级ul触发click

on()方法优势3:创建动态的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件

$("ol li").click( function() {
                alert(11);
            })
            var li = $("<li>我是后来创建的</li>");
            $("ol").append(li);
//这种写法新增的li不会被绑定方法

用on()做绑定点击事件:

$("ol").on("click", "li", function() {
                alert(11);
            })
            var li = $("<li>我是后来创建的</li>");
            $("ol").append(li);

 

2.事件处理off()解绑事件

off()方法可以移除通过on()方法添加的事件处理程序。

如果有事件只想触发一次,one(),使用方法基本与on()一致。

 1  
 2 <!DOCTYPE html>
 3 <html lang="en">
 4  
 5 <head>
 6     <meta charset="UTF-8">
 7     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 8     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 9     <title>Document</title>
10     <style>
11         div {
12             width: 100px;
13             height: 100px;
14             background-color: pink;
15         }
16     </style>
17     <script src="jquery.min.js"></script>
18     <script>
19         $(function() {
20             $("div").on({
21                 click: function() {
22                     console.log("我点击了");
23                 },
24                 mouseover: function() {
25                     console.log(‘我鼠标经过了‘);
26                 }
27             });
28             $("ul").on("click", "li", function() {
29                 alert(11);
30             });
31             // 1. 事件解绑 off 
32             // $("div").off();  // 这个是解除了div身上的所有事件
33             $("div").off("click"); // 这个是解除了div身上的点击事件
34             $("ul").off("click", "li");//解除事件委托
35             // 2. one() 但是它只能触发事件一次
36             $("p").one("click", function() {
37                 alert(11);
38             })
39         })
40     </script>
41 </head>
42  
43 <body>
44     <div></div>
45     <ul>
46         <li>我们都是好孩子</li>
47         <li>我们都是好孩子</li>
48         <li>我们都是好孩子</li>
49     </ul>
50     <p>我是屁</p>
51 </body>
52  
53 </html>

 3.自动触发事件trigger()

? 有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。由此 jQuery 为我们提供了两个自动触发事件 trigger() 和 triggerHandler() ;

三种触发方式:

element.click()//第一种简写形式
element.trigger("type")//第二种自动触发模式
element.triggerHandler(type)//第三种自动触发模式

triggerHandler与前两者的最大不同:不会触发元素的默认行为,比如表单获取焦点光标闪烁

 1 <body>
 2     <div></div>
 3     <input type="text">
 4       
 5     <script>
 6     $(function() {
 7       // 绑定事件
 8       $("div").on("click", function() {
 9         alert(11);
10       });
11 
12       // 自动触发事件
13       // 1. 元素.事件()
14       // $("div").click();会触发元素的默认行为
15       
16       // 2. 元素.trigger("事件")
17       // $("div").trigger("click");会触发元素的默认行为
18       $("input").trigger("focus");
19       
20       // 3. 元素.triggerHandler("事件") 就是不会触发元素的默认行为
21       $("input").on("focus", function() {
22         $(this).val("你好吗");
23       });
24       // 一个会获取焦点,一个不会
25       $("div").triggerHandler("click");
26       // $("input").triggerHandler("focus");
27     });
28     </script>
29 </body>

 

8.3 jQuery事件对象

事件被触发,就会有事件对象的产生。

element.on(events,[selector],function(event){})

function中的event就是事件对象。

组织默认行为:event.preventDefault()或者 return false

阻止冒泡:event.stopPropagation()

 1 <body>
 2     <div></div>
 3 
 4     <script>
 5         $(function() {
 6             $(document).on("click", function() {
 7                 console.log("点击了document");
 8             })
 9             $("div").on("click", function(event) {
10                 // console.log(event);
11                 console.log("点击了div");
12                 event.stopPropagation();
13             })
14         })
15     </script>
16 </body>

 

jQuery常用API(八)——jQuery事件

上一篇:小程序上传图片(.net core 接口)


下一篇:Wondershare PDFelement 7 Pro Mac(好用的PDF编辑器) v7.6.10中文激活版