Home > Web Front-end > JS Tutorial > What are the ways to bind events in javascript

What are the ways to bind events in javascript

青灯夜游
Release: 2021-06-17 15:47:06
Original
3487 people have browsed it

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.

What are the ways to bind events in javascript

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>
Copy after login

2. Use JavaScript objects to bind events

<button id="btn">按钮</button>
<script>
document.getElementById(&#39;btn&#39;).onclick = function(){
	alert(1)
}
</script>
Copy after login

3.Event monitoring

<button id="btn">按钮</button>
<script>
document.getElementById(&#39;btn&#39;).addEventListener(&#39;click&#39;,function(){
	alert(1)
})
//兼容IE
document.getElementById(&#39;btn&#39;).attachEvent(&#39;click&#39;,function(){
	alert(1)
})
</script>
Copy after login

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.

What are the ways to bind events in javascript

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>
Copy after login
**No event delegation is required. **The cost of this method is a large waste of performance. If there are thousands of pieces of data, the page will be severely stuck or even crash.

function Contact(){
    this.init();
}
	

Contact.prototype.init = function(){
	var userdel = document.querySelectorAll(&#39;.user-delete&#39;);
	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();
Copy after login
Use event delegation

and only bind the event once, which greatly reduces performance loss. It is also a very good solution when a large number of event handlers are required.

function Contact(){
    this.init();
}
	
Contact.prototype.init = function(){
	var lis = document.querySelector(&#39;#J_List&#39;);
	lis.addEventListener(&#39;click&#39;, function(e){
		var target = e.target || e.srcElement;
		if (!!target && target.className.toLowerCase()===&#39;user-delete&#39;) {
		}
	})
}

new Contact();
Copy after login
【Related recommendations: javascript learning tutorial】###

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
What are JavaScript hook functions?
From 1970-01-01 08:00:00
0
0
0
What is JavaScript garbage collection?
From 1970-01-01 08:00:00
0
0
0
c++ calls javascript
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template