首頁 >web前端 >js教程 >關於Jquery中的bind(),on()綁定事件方式總結

關於Jquery中的bind(),on()綁定事件方式總結

高洛峰
高洛峰原創
2016-12-08 16:46:231042瀏覽

一.bind()

使用方式:$(selector).bind(event,data,function)

event:必需項;添加到元素的一個或多個事件,例如click,dblclick等;

單事件處理:例如$(selector).bind("click",data,function);

多事件處理:1.利用空格分隔多事件,例如$(selector).bind("click dbclick mouseout",data, function);

2.利用大括號靈活定義多事件,例如$(selector).bind({event1:function, event2:function, ...}) 

3.空格相隔方式:綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定較為死板,綁定不能給事件單獨綁定函數,適合處理多個事件調用相同函數情況;

大括號替代方式:綁定較為靈活,可以給事件單獨綁定函數;    

data:可選;需要傳遞的參數;

function:必需;當綁定事件發生時,需要執行的函數;

例子:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>jquery中bind()绑定事件方式</title>
  <style type="text/css">
    .container
    {
      width: 300px;
      height: 300px;
      border: 1px #ccc solid;
      background-color: Green;
    }
    .btn-test
    {
      border: 1px #ccc solid;
      padding: 5px 15px;
      cursor: pointer;
    }
  </style>
  <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
  <script type="text/javascript">
    $(function () {
 
      /*********添加单个事件处理*********/
 
      $(".btn-test").bind("click", function () {
        //显示隐藏div
        $(".container").slideToggle();
      });
 
      /********添加多个事件处理********/
 
      //空格相隔方式
      $(".btn-test").bind("mouseout click", function () {
        //显示隐藏div
        $(".container").slideToggle();
      });
 
      //大括号替代方式
      $(".btn-test").bind({
        "mouseout": function () {
          alert("这是mouseout事件!");
        },
        "click": function () {
          $(".container").slideToggle();
        }
      });
 
      /********删除事件处理********/
      $(".btn-test").unbind("click");
 
    });
  </script>
</head>
<body>
  <input type="button" value="按钮" class="btn-test" />
  <div class="container">
  </div>
</body>
</html>

   

適用所有版本,但是根據官網解釋,自從jquery1.以後函數用bind(inind( on()來代替。

二.ON():

簡要描述

on() 為指定的元素,添加一個或多個事件處理程序,並規定當這些事件發生時運行的函數。使用 on() 方法的事件處理程序適用於目前或未來的元素(例如由腳本建立的新元素)。

使用方式

$(selector).on(event,childselector,data,function)

event:必要項;新增至元素的一個或多個事件,例如click,dblclick等;

單事件處理:例如$(selector).on("click",childselector,data,function);

多事件處理:

1.利用空格分隔多事件,例如$(selector).on("click dbclick mouseout",childseletor ,data,function);

2.利用大括號靈活定義多事件,例如$(selector).on({event1:function, event2:function, ...},childselector); 

3.空格相隔方式:綁定較為死板,不能給事件單獨綁定函數,適合處理多個事件調用同一函數情況;

大括號替代方式:綁定較為靈活,可以給事件單獨綁定函數; 

childSelector: 可選;需要加入事件處理程序的元素,一般為selector的子元素;   

data:可選;需要傳遞的參數;

function:必要;當綁定事件發生時,需要執行的函數;

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <title>jquery中on()绑定事件方式</title>
   <style type="text/css">
     .container
     {
       width: 300px;
       height: 300px;
       border: 1px #ccc solid;
       background-color: Green;
     }
     .btn-test
     {
       border: 1px #ccc solid;
       padding: 5px 15px;
       cursor: pointer;
     }
   </style>
   <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
   <script type="text/javascript">
     $(function () {
  
       /*********添加单个事件处理*********/
  
       $(".header").on("click", ".btn-test", function () {
         //显示隐藏div
         $(".container").slideToggle();
       });
  
       /********添加多个事件处理********/
  
       //空格相隔方式
       $(".header").on("mouseout click", ".btn-test", function () {
         //显示隐藏div
         $(".container").slideToggle();
       });
  
       //大括号替代方式
       $(".header").on({
         "mouseout": function () {
           alert("这是mouseout事件!");
         },
         "click": function () {
           $(".container").slideToggle();
         }
       }, ".btn-test");
  
       //删除事件
       $(".header").off("click", ".btn-test");
  
     });
   </script>
 </head>
 <body>
   <div class="header">
     <input type="button" value="按钮" class="btn-test" />
   </div>
   <div class="container">
   </div>
 </body>
 </html>

     

適用Jquery版本

jquery1.7及其以上版本;jquery1.7版本出現之後用於替代bind(),live()綁定事件方式;

相同點:

1.都支援單元素多事件的綁定;空格相隔方式或大括號替代方式;

2.均是透過事件冒泡方式,將事件傳遞到document進行事件的回應;

比較和聯繫:

1.bind()函數只能針對已經存在的元素進行事件的設定;但是live(),on(),delegate()皆支援未來新加入元素的事件設定;示範程式碼

如下:

2.bind()函數在jquery1.7版本以前比較受推崇,1.7版本出來之後,官方已經不推薦用bind(),替代函數為on(),這也是1.7版本新加入的函數,同樣,可以

用來代替live()函數,live()函數在1.9版本已經刪除;

3.live()函數和delegate()函數兩者類似,但是live()函數在執行速度,靈活性和CSS選擇器支援方面較delegate()差些,想了解具體情況,請戳這:

4.bind()支援Jquery所有版本;live()支援jquery1.8-;delegate()支援jquery1.4.2+;on()支援jquery1.7+ ; 

如果專案中引用jquery版本為低版本,推薦用delegate(),高版本jquery可以使用on()來代替,以上僅為個人看法,如有不同想法,歡迎拍磚交流。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn