綁定方法:1、直接在標籤中使用「onclick」屬性綁定事件;2、使用「物件.onclick=function(){事件}」語句綁定事件;3、使用「對象.attachEvent('click',function(){事件})」語句綁定事件。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
javascript綁定事件的方法
#首先,我先介紹我們平常綁定事件的三種方法。
1.直接在標籤中綁定事件
<button onclick="open()">按钮</button> <script> function open(){ alert(1) } </script>
#2.使用JavaScript物件綁定事件
<button id="btn">按钮</button> <script> document.getElementById('btn').onclick = function(){ alert(1) } </script>
3.事件監聽
<button id="btn">按钮</button> <script> document.getElementById('btn').addEventListener('click',function(){ alert(1) }) //兼容IE document.getElementById('btn').attachEvent('click',function(){ alert(1) }) </script>
擴充資料:事件委託
對“事件處理程序過多”問題的解決方案就是事件委託。事件委託利用了事件冒泡,只制定一個事件處理程序,就可以管理某一類型的所有事件。例如click事件一直會冒泡到document層。也就是我們可以只指定onclick事件處理程序,而不必為每個事件分別添加處理程序。下面我們來看一個阿里巴巴筆試題的例子。
樣式以及DOM結構
<style> * { padding: 0; margin: 0; } .head, li div { display: inline-block; width: 70px; text-align: center; } li .id, li .sex, .id, .sex { width: 15px; } li .name, .name { width: 40px; } li .tel, .tel { width: 90px; } li .del, .del { width: 15px; } ul { list-style: none; } .user-delete { cursor: pointer; } </style> </head> <body> <div id="J_container"> <div class="record-head"> <div class="head id">序号</div><div class="head name">姓名</div><div class="head sex">性别</div><div class="head tel">电话号码</div><div class="head province">省份</div><div class="head">操作</div> </div> <ul id="J_List"> <li><div class="id">1</div><div class="name">张三</div><div class="sex">男</div><div class="tel">13788888888</div><div class="province">浙江</div><div class="user-delete">删除</div></li> <li><div class="id">2</div><div class="name">李四</div><div class="sex">女</div><div class="tel">13788887777</div><div class="province">四川</div><div class="user-delete">删除</div></li> <li><div class="id">3</div><div class="name">王二</div><div class="sex">男</div><div class="tel">13788889999</div><div class="province">广东</div><div class="user-delete">删除</div></li> </ul> </div> </body>**不用事件委託。 **而這種方法造成的代價是,性能的大量浪費。如果是成千上萬條數據,頁面將會嚴重卡頓,甚至崩潰。
function Contact(){ this.init(); } Contact.prototype.init = function(){ var userdel = document.querySelectorAll('.user-delete'); for(var i=0;i<lis.length;i++){ (function(j){ userdel[j].onclick = function(){ userdel[j].parentNode.parentNode.removeChild(userdel[j].parentNode); } })(i); } } new Contact();使用事件委託,只綁定一次事件,大大減少了效能的損耗。也是在需要大量事件處理程序中非常好的解決方式。
function Contact(){ this.init(); } Contact.prototype.init = function(){ var lis = document.querySelector('#J_List'); lis.addEventListener('click', function(e){ var target = e.target || e.srcElement; if (!!target && target.className.toLowerCase()==='user-delete') { } }) } new Contact();【相關推薦:javascript學習教學】####
以上是javascript綁定事件的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!