元素綁定事件幾種方式


一、元素綁定事件幾種方式(Js方式)

1:HTML中添加onclick

<button id="vv" onclick="myfunction()" >哈哈</button>

2:JS中定義函數綁定事件!(寫法一)

var funcc = function () {
  alert('我愛編程')
  }
var aa = document.getElementById('vv')
aa.onclick = funcc

3:直接定義函數與內容(寫法二)

document.getElementById('vv').onclick = function () {
  alert('hasssshhaa ')
  }

4:利用addEventListener

document.getElementById('vv').addEventListener('click',funcc);
//或者:
document.getElementById('vv').addEventListener('click',function () {
  alert('hahah')
})
<div id="btn" onclick="clickone()" onclick="clicktwo()"></div> 
<script>
   function clickone(){ alert("hello"); } //執行這個
   function clicktwo(){ alert("world!"); }
</script>
<div id="btn"></div>
<script>
 document.getElementById("btn").onclick = function(){ alert("hello"); }
 document.getElementById("btn").onclick = function(){ alert("world"); } //執行這個
</script>
<div id="btn"></div>
<script>
  document.getElementById("btn").addeventlistener("click",clickone,false);
  function clickone(){ alert("hello"); } //先執行
  document.getElementById("btn").addeventlistener("click",clicktwo,false);
  function clicktwo(){ alert("world"); } //后執行
</script>

二、元素綁定事件幾種方式(Jq方式)

1. 簡單事件綁定:

這種綁定事件方式不會重疊(使用場景,場景:涉及dom操作-用戶觸發,這種情況一般dom都會加載完畢,沒有影響,但是圖片的長時間加載情況下,用戶點擊則出問題,Dom的操作用戶觸發。

$(document).click(function () {
    alert(1);
})

//可以寫這種形式(使用場景,通用方法,場景:涉及dom操作-自動觸發則使用,必須dom加載完畢-建議采納推薦此方法-沒有什么方法是寫在$(fu(){}))解決不了的。

$(function(){
   $(document).click(function () {
        alert(1);
    })
});

但是有弊端,是我的表格數據分頁有圖片,第一頁的可以,當我異步刷新表格后,無效。

2.bind方式(不推薦,1.7以后的jQuery版本被on取代)

 $(document).bind("click mouseenter",function () {
    alert(1);
 })

比簡單事件綁定方式的優勢:
可以同時綁定多個事件,比如:bind(“mouseenter mouseleave”, function(){})
缺點:要綁定事件的元素必須存在文檔中。

3. delegate方式(特點:性能高,支持動態創建的元素)

與前兩種方式最大的優勢:減少事件綁定次數提高效率,支持動態創建出來的元素綁定事件!

$(document).delegate(".box","click",function () {
      alert(1);
})

4. on方式(最現代的方式,兼容zepto(移動端類似jQuery的一個庫),強烈建議使用的方式)(重點)

$(document).on("click mouseenter",".box",{"name":111},function () {
    alert(event.data.name);
});
$(".box").on("click",{},function (e) {
    e.data
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM