jQuery(四)jQuery事件機制與JavaScript的區別

                                              jQuery事件機制與JavaScript的區別javascript

       單獨用一篇來說這個標題確定是不行的,但這個其實也是一個比較關鍵的地方。看過前面文章的同窗應該都知道,對於JS而言事件的階段有捕捉階段和冒泡階段。對於Jquery而言他只有冒泡階段,這個地方是比較關鍵的地方。html

       體現冒泡階段的一段jquery代碼(js的請回看js系列):java

$(document).ready(function(){
	
	
	$('div').click(function(event){
	
				alert("div");
			
	});
	
	$('#mBtn').click(function(){
	
		alert("mBtn");
		event.stopPropagation();
	});
});

//html頁面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery.js" ></script>
		<script type="text/javascript" src="js/event.js" ></script>
	</head>
	<body>
		<div>
			<p>測試事件的冒泡<p>
			<input class="button" id="mBtn" type="button" value="maopao" />
			<a href="http://www.baidu.com">enen</a>
		</div>
	</body>
</html>

兩種方式進行對冒泡事件的阻止,固然是有這個阻止的需求的前提哈。jquery

1.藉助event.target保留了發生事件的目標元素//js中也可使用性能

$(document).ready(function(){
	//對外層加一個判斷,function中必須帶參數,否則用的就是全局的沒法進行判斷
	$('div').click(function(event){
			if(event.target==this){
				alert("div");
			}
	});
	
	$('#mBtn').click(function(){
	
		alert("mBtn");
	})
	
});

 2.使用中止事件傳播的方法測試

$(document).ready(function(){

	$('div').click(function(event){
	
		alert("div");
			
	});
	
    //使用全局event的中止事件傳播方法
	$('#mBtn').click(function(){
	
		alert("mBtn");
		event.stopPropagation();
	});
	
});

  下面會引入一個概念:默認操做,這個體系是和事件傳播不一樣的。二者任意一個發生都會終止另外一個,同時終止兩個要return false;或者一塊兒調用 stopPropagation();和.preventDefault();其實就解釋了爲何個人js有一次必需要使用return false,才行。this

   事件委託:當爲每個按鈕都註冊一個事件的,若是是對一個表格內的全部按鈕進行操做的話若是都註冊事件,實際上是一個極其浪費內存,影響性能的一件事情。一個很好的方式就是利用冒泡原理,將事件進行委託給最頂層的其中一個元素,其實我在js裏面都已經有這個思想了,查看js實現開源中國IT技能頁面的思想。代碼以下:code

function entrust(){
	$('body').click(function(event){
		if($(event.target).is('.button')){
			if(event.target.id=='mBtn'){
				alert('mBtn');
			}else{
				alert("error!");
			}
		}
		
	});
}

代碼只對了一個按鈕操做,你能夠對更多的按鈕進行操做,仍是比較簡單關鍵的就是event.target記錄的點擊事件的元素,包括了它的id,class,value值等屬性。htm

模擬用戶操做事件:jquery裏面提供了兩種方式,不帶參數的使用簡寫方法,使用.trigger()方法事件

$('#mBtn').click();
	$('#mBtn').trigger('click');

鍵盤事件:最關鍵的一個實踐經驗,用戶按了哪一個鍵,監聽keyup或keydown,用戶輸入了什麼字符,應該監聽keypress事件(按下不放能夠輸入不少字符,有一個字符輸入就除非事件)。這個地方就是最關鍵的地方。

$(document).keyup(function(event){
		switch(String.fromCharCode(event.keyCode)){
			case 'D':
			   alert("DDDD!!!");break;
			case 'F':
			   alert("FFFF!!!");break;
		}
	});
相關文章
相關標籤/搜索