1. 程式人生 > >jQuery on() 方法 為選定已存在元素和未來元素繫結標準事件和自定義事件

jQuery on() 方法 為選定已存在元素和未來元素繫結標準事件和自定義事件

很有必要說說jQuery的on方法,這個方法存在大乾坤大奧祕,主要注意兩點:

1、為已存在元素和未來元素(動態新增元素)繫結處理函式。

2、自定義一個非標準的事件並繫結處理函式。

定義和用法

on() 方法在被選元素及子元素上新增一個或多個事件處理程式。

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。該方法給 API 帶來很多便利,我們推薦使用該方法,它簡化了 jQuery 程式碼庫。

注意:使用 on() 方法新增的事件處理程式適用於當前及未來的元素(比如由指令碼建立的新元素)。

提示:如需移除事件處理程式,請使用 

off() 方法。

提示:如需新增只執行一次的事件然後移除,請使用 one() 方法。

 

例項1:在元素上新增自定義事件 ,就是繫結一個自定義事件

<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("p").on(
"myOwnEvent", function(event, showName){ $(this).text(showName + "! What a beautiful name!").show(); }); $("button").click(function(){ $("p").trigger("myOwnEvent",["Anja"]); }); }); </script> </head> <body> <button>Trigger custom event</button> <
p>Click the button to attach a customized event on this p element.</p> </body> </html>

測試執行,請點選這裡

 

 

例項2:向未來的元素新增事件處理程式,繫結處理方法時,元素還不存在

<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("div").on("click","p",function(){
    $(this).slideToggle();
  });
  $("button").click(function(){
    $("<p>This is a new paragraph.</p>").insertAfter("button");
  });
});
</script>
</head>
<body>

<div style="background-color:yellow">
<p>This is a paragraph.</p>
<p>Click any p element to make it disappear. Including this one.</p>
<button>Insert a new p element after this button</button>
</div>

</body>
</html>

 

 

on() 和 click() 的區別:

二者在繫結靜態控制元件時沒有區別,但是如果面對動態產生的控制元件,只有 on() 能成功的繫結到動態控制元件中。

以下例項中原先的 HTML 元素點選其身後的 Delete 按鈕就會被刪除。而動態新增的 HTML 元素,使用 click() 這種寫法,點選 Delete 按鈕無法刪除;使用 On() 方式可以。

更多例項

從 bind() 改為 on()
如何使用 on() 來達到與 bind() 相同的效果。

Changing from delegate() to on()
如何使用 on() 來達到與 delegate() 相同的效果。

從 live() 改為 on()
如何使用 on() 來達到與 live() 相同的效果。

新增多個事件處理程式
如何向元素新增多個事件處理程式。

使用 map 引數新增多個事件處理程式
如何使用 map 引數向被選元素新增多個事件處理程式。

在元素上新增自定義事件
如何在元素上新增自定義名稱空間事件。

向函式傳遞資料
如何向函式傳遞資料。

向未來的元素新增事件處理程式
演示 on() 方法也適用於尚未建立的元素。

移除事件處理程式
如何使用 off() 方法移除事件處理程式。

參考原文:http://www.runoob.com/jquery/event-on.html