Home > Web Front-end > JS Tutorial > body text

Use a closure loop to load click events

坏嘻嘻
Release: 2018-09-13 18:07:00
Original
1561 people have browsed it

In this article, we will share with you two methods on how to solve the for loop closure problem in JS. We hope it can help you.

A recent project also used the map function. It was an internal project of the company, so I studied the API of Baidu Maps. It feels like there are still many similarities with the API of Tiantu. The basic usage is pretty much the same. However, the response of Baidu Map is much faster than that of Tian Map. And now that I'm using Baidu Maps, some of the problems I had when using Tian Maps in the past have been explained more clearly.


#1. Prepare data. point information.


		var points = [
		{"lng":116,"lat":40,"url":"http://www.baidu.com","id":50,"name":"p1"},
		{"lng":117,"lat":31,"url":"http://www.taobao.com","id":2,"name":"p2"},
		{"lng":116,"lat":34,"url":"http://www.google.com","id":3,"name":"p3"}
		]
Copy after login


2. Load the map. The center point and display level default to China.



		var map = new BMap.Map("container"); 
		map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);//设置中心点和显示级别。中国。
		map.enableScrollWheelZoom();//滚轮放大缩小。
Copy after login


3. Display the marker point in a loop. Use the immediate execution function and closure loop to load the click event and display the information window to display more information about the label point.



		function addMarker(points){  // 创建图标对象   

			// 创建标注对象并添加到地图   
			for(var i = 0,pointsLen = points.length;i <pointsLen;i++){
				var point = new BMap.Point(points[i].lng,points[i].lat);	
				var  marker = new BMap.Marker(point);   
				map.addOverlay(marker); 
				//给标注点添加点击事件。使用立即执行函数和闭包
				(function() {
					var thePoint = points[i];
					marker.addEventListener("click",function(){
						showInfo(this,thePoint);
					});
				})();

			}

		}
Copy after login


4. Click the information window that displays the markers.



	//显示信息窗口,显示标注点的信息。
	function showInfo(thisMaker,point){
		var sContent =
		&#39;<ul style="margin:0 0 5px 0;padding:0.2em 0">&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;">&#39;
		+&#39;<span style="width: 50px;display: inline-block;">id:</span>&#39; + point.id + &#39;</li>&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;">&#39;
		+&#39;<span style="width: 50px;display: inline-block;">名称:</span>&#39; + point.name + &#39;</li>&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;"><span style="width: 50px;display: inline-block;">查看:</span><a href="&#39;+point.url+&#39;">详情</a></li>&#39;
		+&#39;</ul>&#39;;
		var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
	   	thisMaker.openInfoWindow(infoWindow);   //图片加载完毕重绘infowindow
	   }
Copy after login




Rendering:

Use a closure loop to load click events


Here you just click to display the information window. In fact, hover the display window and slide the mouse over the display window.

Related recommendations:

How to solve the for loop closure problem in JS

JS loop li adds a click event (closed Package application)


#

The above is the detailed content of Use a closure loop to load click events. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
js
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!