【學習筆記三】- 動態添加元素綁定事件函數測試

寫在前面:

這是昨天參加一個筆試的時候遇到的題,百度了一下之後自己寫了一個簡單的測試。


首先簡單說一下動態添加,因爲樓主智障,開始的時候沒有通過button按鈕綁定click事件,直接在js中用三種方法添加了三個<li>,結果不論用什麼方法綁定都能成功,一下腦子沒轉過來頓時就懵逼了。

所以我理解的動態應該是通過用戶操作添加的元素,而不是一開始頁面加載完就有的。


然後是綁定方法,現在通過jQuery添加元素的方法大致如下:

1、不能綁定動態添加的元素的方法

$('...').click(function(event){

if($(event.target).is('a')){alert($(this).text())}
})

$('...').bind(event,function(){})
2、可以給動態添加的元素綁定事件的方法:

據說不同jQuery版本的使用方法情況是這樣

Query 1.3-1.4.2 用.live('click',func)
1.4.2-1.7 用.delegate('li','click',func)

1.7後 用.on('click','li',func)

我沒有去下之前的版本測試,自己用的是3.2.1,就直接用的on方法

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>綁定動態添加元素</title>
	<script type="text/javascript" src="../jquery-3.2.1.js"></script>
	<script type="text/javascript">
	$(document).ready(function() {
		$('#btn').click(function appendLi(){
			//以html創建新元素
			var lic='<li id="c">something3</li>';
			//用jQuery創建新元素
			var lid=$('<li id="d">something4</li>');
			//用DOM創建新元素
			var lie=document.createElement('li');
			var text=document.createTextNode('something5');
			lie.setAttribute('id','e');
			lie.appendChild(text);
			//添加元素
			$('ul').append(lic,lid,lie);
		});
			$('#c').click(function(){  
			    alert( $(this).text() );  
			});  //id爲c的li未綁定成功
			
			$('ul').on('click','#d',function(){  
			    alert( $(this).text() );  
			});  //id爲d的li綁定成功

			$('li').bind('mouseover',function(event) {
				$(this).css('color','#ccc')
			});	//動態添加的cde未綁定成功,原有的ab綁定成功

			$('li').mouseleave(function(event) {
				$(this).css('color','black')
			});	//動態添加的cde未綁定成功,原有的ab綁定成功
	});
	</script>
</head>
<body>
	<div id='test'>
		<ul>
			<li id='a'>something1</li>
			<li id='b'>something2</li>
		</ul>
	</div>
	<button id='btn'>add li</button>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章