jQuery on()

admin發表於2017-02-17

在匹配元素上繫結一個或多個事件處理函式。

on()繫結事件處理函式主要利用事件冒泡,匹配元素上註冊的事件處理函式會響應子元素的事件觸發。

語法結構一:

[JavaScript] 純文字檢視 複製程式碼
.on(events [, selector ] [, data ], handler(eventObject))

引數解析:

(1).events:一個或多個空格分隔的事件型別和可選的名稱空間,或僅僅是名稱空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。

(2).selector:可選,一個選擇器字串,用於過濾出匹配元素中能觸發事件的後代元素。

(3).data:當一個事件被觸發時,要傳遞給event.data的資料。

(4).handler(eventObject):事件處理函式,引數是事件物件。

jQuery1.7版本新增。

語法結構二:

[JavaScript] 純文字檢視 複製程式碼
.on(events [, selector ] [, data ])

引數解析:

(1).events:一個物件,鍵是由一個或多個由空格分隔的事件型別及可選的名稱空間,值是這些事件型別所對應的事件處理函式。

(2).selector:可選,一個選擇器字串,用於過濾出匹配元素中能觸發事件的後代元素。

(3).data:當一個事件被觸發時,要傳遞給event.data的資料。

jQuery1.7版本新增。

關於名稱空間可以參閱jQuery 名稱空間一章節。

程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{
  width:200px;
  height:150px;
  background:#ccc;
  text-align:center;
  color:red;
}
#ant{
  width:150px;
  height:100px;
  background:green;
}
</style>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
  $("#box").on("click", function () {
    $("#box").text("螞蟻部落");
  })
})
</script> 
</head> 
<body>
<div id="box">
  <div id="ant">
    <input type="button" value="檢視效果"/>
  </div>
</div>
</body>
</html>

將事件處理函式註冊在box元素之上,點選它的子元素利用冒泡原理則會執行事件處理函式。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{
  width:200px;
  height:150px;
  background:#ccc;
  text-align:center;
  color:red;
}
#ant{
  width:150px;
  height:100px;
  background:green;
}
</style>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
  $("#box").on("click","input", function () {
    $("#box").text("螞蟻部落");
  })
})
</script> 
</head> 
<body>
<div id="box">
  <div id="ant">
    <input type="button" value="檢視效果"/>
  </div>
</div>
</body>
</html>

通過第二個引數可以篩選哪些子元素可以觸發事件。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{
  width:200px;
  height:150px;
  background:#ccc;
  text-align:center;
  color:red;
}
#ant{
  width:150px;
  height:100px;
  background:green;
}
</style>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
  $("#box").on("dblclick keydown", "input", function () {
    $("#box").text("螞蟻部落");
  })
})
</script> 
</head> 
<body>
<div id="box">
  <div id="ant">
    <input type="button" value="檢視效果"/>
  </div>
</div>
</body>
</html>

可以一次性註冊多個事件處理函式,用空格分隔。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{
  width:200px;
  height:150px;
  background:#ccc;
  text-align:center;
  color:red;
}
#ant{
  width:150px;
  height:100px;
  background:green;
}
</style>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script type="text/javascript"> 
$(document).ready(function () {
  var infor = {
    address: "青島市南區"
  }
  $("#box").on("dblclick keydown", "input", infor, function () {
    $("#box").text(event.data.address);
  })
})
</script> 
</head> 
<body>
<div id="box">
  <div id="ant">
    <input type="button" value="檢視效果"/>
  </div>
</div>
</body>
</html>

可以給事件處理函式傳遞資料,接收者是event.data物件。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{
  width:200px;
  height:150px;
  background:#ccc;
  text-align:center;
  color:red;
}
#ant{
  width:150px;
  height:100px;
  background:green;
}
</style>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script type="text/javascript"> 
$(document).ready(function () {
  function done() {
    $("#box").text("螞蟻部落");
  }
  $("#box").on({
    "click": done
  })
})
</script> 
</head> 
<body>
<div id="box">
  <div id="ant">
    <input type="button" value="檢視效果"/>
  </div>
</div>
</body>
</html>

第一個引數可以是一個物件,屬性是事件型別,屬性值是事件處理函式。

相關文章