Binding method: 1. Use the "onclick" attribute directly in the tag to bind the event; 2. Use the "object.onclick=function(){event}" statement to bind the event; 3. Use the "object .attachEvent('click',function(){event})" statement binds the event.
The operating environment of this tutorial: windows7 system, javascript version 1.8.5, Dell G3 computer.
How to bind events in javascript
First of all, let me introduce the three methods we usually use to bind events.
1. Bind events directly in tags
<button onclick="open()">按钮</button> <script> function open(){ alert(1) } </script>
2. Use JavaScript objects to bind events
<button id="btn">按钮</button> <script> document.getElementById('btn').onclick = function(){ alert(1) } </script>
3.Event monitoring
<button id="btn">按钮</button> <script> document.getElementById('btn').addEventListener('click',function(){ alert(1) }) //兼容IE document.getElementById('btn').attachEvent('click',function(){ alert(1) }) </script>
Extended information:Event delegation
Response to "Too many event handlers" The solution to the problem is event delegation. Event delegation takes advantage of event bubbling, and only one event handler can be developed to manage all events of a certain type. For example, click events always bubble up to the document layer. That is, we can only specify the onclick event handler instead of adding handlers to each event separately.Let’s look at an example of Alibaba’s written test questions.
Style and DOM structure
<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();
The above is the detailed content of What are the ways to bind events in javascript. For more information, please follow other related articles on the PHP Chinese website!