jQuery能夠為一個元素註冊多個相同事件處理函式

antzone發表於2017-04-10

顯然這是jquery能夠實現的,只要是原生javascript實現的功能,jquery自然都能夠實現,因為jquery就是由原生javascript編寫而成。

但是不少初學者如果注意不夠的話,可能會犯一些錯誤,這主要是由於使用控制程式碼方式註冊事件處理函式的習慣導致的。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone {
  height: 30px;
  width: 100px;
  background: #ccc;
  text-align:center;
  line-height:30px;
}
</style>
<script type="text/javascript">
window.onload = function () {
  var obt = document.getElementById("bt");
  var odiv = document.getElementById("antzone");
  obt.onclick = function () { odiv.innerHTML = "螞蟻部落"; }
  obt.onclick = function () { odiv.style.backgroundColor = "blue"; }
}
</script>
</head>
<body>
<div id="antzone"></div>
<input type="button" id="bt" value="檢視效果" />
</body>
</html>

通過控制程式碼方式註冊事件處理函式,後面的會覆蓋掉前面,所以只能夠設定div的背景色為藍色。

更多原生javascript註冊事件處理函式的方式可以參閱javascript如何註冊事件處理函式一章節。

使用jquery註冊事件處理函式就不用擔心被覆蓋的問題,程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone {
  height: 30px;
  width: 100px;
  background: #ccc;
  text-align:center;
  line-height:30px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
  $("#bt").click(function () {
    $("#antzone").text("螞蟻部落");
  });
  $("#bt").click(function () {
    $("#antzone").css("background-color","blue");
  });
})
</script>
</head>
<body>
<div id="antzone"></div>
<input type="button" id="bt" value="檢視效果" />
</body>
</html>

上面兩個事件處理函式都得到了良好的執行。

相關文章