jQuery——事件處理

一、事件流模型
    若是單擊一次在HTML頁面上的某個按鈕,不只會觸發按鈕的單擊事件,還將觸發按鈕所屬容器(div、span)等的單擊事件,同時還將觸發父級容器的單擊事件,直至body、html和document,這一動做形成一臉串的事件觸發,造成一個事件流。由於事件流模型不一樣,整體能夠分爲冒泡型事件流和捕獲型事件流兩種。
       1)冒泡型事件流:冒泡型事件流將從下到上一級一級的觸發事件流。
       2)捕獲型事件流:捕獲型事件流將從上到下一級一級的觸發事件流。
   通常使用的是冒泡型事件流。
二、js事件種類
   1)鼠標事件: ondbclick(雙擊)、 onmouseout(光標離開某對象範圍)
   2)鍵盤事件
       onkeydown:當鍵盤上的某個鍵被按下時觸發此事件。
       onkeypress: 當鍵盤上的某個鍵被按下之後觸發此事件。
       onkeyup:當鍵盤上的某個按鍵被釋放時觸發此事件 。
   3)頁面事件
       onerror:出現錯誤時觸發此事件
       onload:頁面內容完成時觸發此事件
       onresize:當瀏覽器的窗口大小被改變時觸發此事件
       onscroll:瀏覽器的滾動條位置發生變化時觸發
       onunload:當前頁面被改變時觸發
   4)表單事件
       onblur:當前元素失去焦點時觸發
       onchange:當前元素失去焦點而且元素的內容發生改變時觸發此事件
       onfocus:當某個元素得到焦點時觸發
       onsubmit:當某個表單被提交時觸發此事件

三、jQuery事件
   jQuery提供了一個DOM加載完成的事件,即ready事件,ready事件是一個能夠在DOM加載完成後執行的事件,該事件能夠綁定多個響應函數,這個事件
是window.onload同樣,ready事件是在全部DOM標記就緒時就被觸發,而不必定與之關聯的其餘資源文件也能就緒。
   /* document 對象加載成功 */  
   $(document).ready(function(){  
       alert('document load');
   });  
   /* window 加載成功 */  
   $(window).ready(function(){  
       alert('window load');
   });  
   /* ID爲show的DIV加載成功 */  
   $("#show").ready(function(){  
       //...
   });        
   /* html 標籤加載成功 */  
   $("html").ready(function(){  
       //...
   });
   //...對於任何dom均可以使用這個方法,當該節點加載成功執行方法。    
   1)表單事件
    a、focus: 控件得到焦點時觸發
       blur: 控件失去焦點時觸發
       $("input").focus(function(){  
           /* 得到焦點 */  
       })  
       .blur(function(){  
           /* 失去焦點 */  
       });  
    b、change: 控件值改變時觸發
       $("input[name=username]").change(function(){  
           /* 值改變時觸發 */  
           alert("用戶名文本框內容已改變。");  
       });  
    c、select: 空間內容被選中時觸發  
    d、submit: 表單提交時觸發
    e、focusin: 當前元素或其子元素得到焦點時觸發
       focusout: 當前元素或其子元素失去焦點時觸發
   2)其餘事件    
       load:當該元素加載就緒後觸發
       upload: 當該元素卸載後觸發
       error:當該元素髮生錯誤時觸發
       resize:當瀏覽器改變大小時觸發
       scroll:當瀏覽器滾動條位置改變時觸發
三、JQuery事件處理
   1)事件綁訂   event / e1.html
       bind(type,[data],fn)
           type:事件類型
           data:可省略,{參數:值,...}
           fn:事件處理函數
       bind(map)
           一次綁定多個事件map是鍵值對{click:function1,...}也能夠直接寫匿名方法。
   2)綁訂方式的簡寫形式
       click(function(){});
   3)合成事件 event/e2.html  e3.html
       hover(enter,leave) : 模擬光標懸停事件,即mouseover事件和mouseout事件
           $('.s1').hover(function(){
               $(this).addClass('s2');
               },function(){
                   $(this).removeClass('s2');
           });
       toggle(fn1,fn2...):模擬鼠標連續單擊事件
       live(type, fn):                該方法爲整個頁面生命週期內的某一類對象綁定一個事件處理程序
   4)刪除事件
       unbind([type], data):刪除匹配對象的事件處理程序,對應bind方法,它能夠刪除全部以bind方式綁定的自定義事件處理程序
           $("#b").unbind("click");
       die([type][,fn]):die方法與live方法對應,用於解除用live註冊的自定義事件 ,type用於指定要刪除的事件類型,fn用於指定要刪除的事件處理程序的名稱。
四、jQuery事件對象的屬性與方法
   屬性:
       type:得到該事件對象的事件類型,如click、focus、mouseover等
       target:得到事件觸發者(DOM對象)
       data:得到調用事件時傳入的額外參數集合
       relatedTarget:得到觸發鼠標事件的DOM元素
       currentTarget:得到當前DOM元素(等同於this關鍵字)
       pageX/pageY:得到鼠標事件中,鼠標光標相對於頁面左上角的位置
       result:得到上一個事件處理函數返回的值
       timeStamp:得到事件發生的事件戳
   方法:
       preventDefault():阻止默認的事件行爲
       isDefaultPrevent():是否執行過preventDefault()方法
       stopPropagation():中止事件冒泡
       isPropagationStopped():是否調用了stopPropagation()方法
       stopImmediatePropagation():停止處理該事件,該方法將中止該事件的其餘事件處理程序,而且中止事件冒泡
       isImmediatePropagationStopped():是否調用了stopImmediatePropagation()方法

       例:
       $(function(){
           $('#a1').click(function(e){
               alert("你點擊了一個連接");
               //中止冒泡
               e.stopPropagation();
           });            
           $('#a2').click(function(e){
               var flag = confirm('肯定刪除嗎');
               if(!flag){
                   e.preventDefault();
               }
           });
       });

四、事件冒泡 event/ e4.html
       a,什麼是事件冒泡?
           子節點產生的事件會依次向上拋給相應的父節點。
       b,如何取消事件冒泡?
           event.cancelBubble = true;
       c, 如何得到事件對象?
           只須要給事件處理函數添加event做爲參數,好比<a href...  onclick="clickA(event);">
       d, 事件對象的做用?
            做用1: 找到事件源
                event.target;    firefox,chrome支持
                event.srcElement;  ie支持
                event.target || event.srcElement
            做用2:   得到鼠標點擊的座標
                event.clientX;
                event.clientY;
       (1)得到事件對象 event / e5.html
           只須要給事件處理函數傳一個參數。
           click(function(event){});
       (2)事件對象的做用  
           a,得到事件源
               event.target;
           b,得到鼠標點擊的座標
               event.pageX
               event.pageY
           c,事件類型
               event.type
       (3)中止冒泡   event / e6.html
           event.stopPropagation()
       (4) 中止默認行爲
           event.preventDefault()
       5)模擬操做 event / e7.html
           trigger('click')

           //$('#username').trigger('focus');
           //也能夠簡化成
           $('#username').focus();
html

相關文章
相關標籤/搜索