国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript MVC 學(xué)習(xí)筆記(五)事件操作的拓展

Anshiii / 1050人閱讀

摘要:事件類型布爾值,表示事件是否通過以冒泡形式觸發(fā)。表示鍵盤事件的屬性布爾值,表示當(dāng)前按下的鍵是否表示一個字符。表示當(dāng)前按鍵的值僅對事件有效。,事件發(fā)生時相對于屏幕的坐標(biāo)。

事件對象

event 對象還包含很多有用的屬性。W3C 范中包含的大部分屬性都列在下面,更多信息參照完整的標(biāo)準(zhǔn)規(guī)范。

事件類型:

bubbles :布爾值,表示事件是否通過DOM 以冒泡形式觸發(fā)。

事件發(fā)生時,反映當(dāng)前環(huán)境信息的屬性:

button :表示(如果有)鼠標(biāo)所按下的按鈕。

ctrlKey :布爾值,表示Ctrl 鍵是否按下。

altKey :布爾值,表示Alt 鍵是否按下。

shiftKey :布爾值,表示Shift 鍵是否按下。

metaKey :布爾值,表示Meta 鍵是否按下。

表示鍵盤事件的屬性:

isChar :布爾值,表示當(dāng)前按下的鍵是否表示一個字符。

charCode :表示當(dāng)前按鍵的unicode 值(僅對keypress 事件有效)。

keyCode :表示非字符按鍵的unicode 值。

which :表示當(dāng)前按鍵的unicode 值,不管當(dāng)前按鍵是否表示一個字符。

事件發(fā)生時的環(huán)境參數(shù):

pageX,pageY :事件發(fā)生時相對于頁面(如viewport 區(qū)域)的坐標(biāo)。

screenX,screenY :事件發(fā)生時相對于屏幕的坐標(biāo)。

和事件相關(guān)的元素:

currentTarget :事件冒泡階段所在的當(dāng)前DOM 元素。

target,originalTrget :原始的DOM 元素。

relatedTarget :其他和事件相關(guān)的DOM 元素(如果有的話)。

不同的瀏覽器對這些屬性的兼容性也不同,尤其是那些不兼容W3C 的瀏覽器。

事件庫

手動處理眾多瀏覽器的差異性吃力不討好。jQuery 的API 提供了bind()函數(shù)用來跨瀏覽器綁定事件監(jiān)聽。在一個jQuery 實(shí)例上調(diào)用此函數(shù),傳入事件名稱和回調(diào)函數(shù):

jQuery("#element").bind(eventName, handler);

給一個元素注冊點(diǎn)擊事件:

jQuery("#element").bind("click", function(event) {
    // ...
});

jQuery 提供了一些常用事件的快捷方法,比如click、submitmouseover

$("#myDiv").click(function(){
// ...
});

注意: 使用這個方法之前要確保DOM 元素是存在的。例如,應(yīng)當(dāng)在頁面載入完成后綁定事件,因此需要綁定window 的load 事件,然后添加監(jiān)聽:

jQuery(window).bind("load", function() {
    $("#signinForm").submit(checkForm);
});

比監(jiān)聽window 的load 事件更好的方法,即DOMContentLoaded。當(dāng)DOM 構(gòu)建完成時觸發(fā)這個事件,這時圖片和樣式表可能還未加載完畢。這也就是說這個事件一定會在用戶和頁面產(chǎn)生交互之前觸發(fā)。并不是所有的瀏覽器都支持DOMContentLoaded,因此jQuery 將它融入了ready() 函數(shù),這個函數(shù)是兼容各個瀏覽器的:

jQuery.ready(function($)){
    $("#myForm"). bind("submit", function(){ /*...*/});
});

實(shí)際上,可以不用ready() 函數(shù)而直接將回調(diào)函數(shù)寫入jQuery 對象。

jQuery(function($){
    // 當(dāng)頁面內(nèi)容可用時調(diào)用
});
切換上下文

關(guān)于事件有一點(diǎn)經(jīng)常讓人感到迷惑就是調(diào)用事件回調(diào)函數(shù)時上下文的切換。當(dāng)使用瀏覽器內(nèi)置的addEventListener() 時,上下文從局部變量切換為目標(biāo)HTML 元素:

new function(){
    this.appName = "wem";

    document.body.addEventListener("click", function(e){
        // 上下文發(fā)生改變,因此appName 是undefined
        alert(this.appName);
    }, false);
};

要想保持原有的上下文,需要將回調(diào)函數(shù)包裝進(jìn)一個匿名函數(shù),然后定義一個引用指向它。即使用代理函數(shù)來保持當(dāng)前的上下文。這在jQuery 中也是一種很常用的模式,包括一個proxy() 函數(shù),只需將指定的上下文傳入函數(shù)即可:

$("signinForm").submit($.proxy(function(){ /* ... */ }, this));
自定義事件

除了瀏覽器內(nèi)置的事件之外,也可以觸發(fā)和綁定自定義事件。這是架構(gòu)庫的一個好方法——也是jQuery 的大多數(shù)插件所使用的模式。大多數(shù)瀏覽器廠商均未實(shí)現(xiàn)W3C 標(biāo)準(zhǔn)中的自定義事件,可以使用諸如jQuery 或Prototype 的類庫來使用這個特性。jQuery 中可以使用trigger() 函數(shù)來觸發(fā)自定義事件??梢酝ㄟ^命名空間的形式來管理事件名稱,命名空間中的單詞用點(diǎn)號分隔,比如:

// 綁定自定義事件
$(".class").bind("refresh.widget",function(){});

// 觸發(fā)自定義事件
$(".class").trigger("refresh.widget");

通過給trigger() 傳入一個額外的參數(shù)來給事件處理程序傳入數(shù)據(jù)。數(shù)據(jù)會以附加參數(shù) 的形式帶入回調(diào):

$(".class").bind("frob.widget", function(event, dataNumber){
    console.log(dataNumber);
}); 

$(".class").trigger("frob.widget", 5);

和內(nèi)置事件一樣,自定義事件同樣會沿著DOM 樹做冒泡。

(公開記錄學(xué)習(xí)JS MVC,不知道能堅(jiān)持多久= =。以《基于MVC的JavaScript web富應(yīng)用開發(fā)》為主要學(xué)習(xí)資料。)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91486.html

相關(guān)文章

  • JavaScript MVC 學(xué)習(xí)筆記事件基本操作

    摘要:事件是應(yīng)用程序的核心,是所有內(nèi)容的驅(qū)動。將對這兩種事件模型的支持都加入標(biāo)準(zhǔn)規(guī)范之中。根據(jù)型,事件首先被目標(biāo)元素所捕捉,然后向上冒泡。取消事件冒泡當(dāng)事件冒泡時,可以通過數(shù)來終止冒泡,這個函數(shù)是對象中的方法。 事件是 JavaScript 應(yīng)用程序的核心,是所有內(nèi)容的驅(qū)動。盡管后來W3C 對此做了標(biāo)準(zhǔn)化,但 IE 仍然堅(jiān)持使用與 W3C 不兼容的事件模型,直到 IE9 才遵循標(biāo)準(zhǔn)。有很多諸...

    Julylovin 評論0 收藏0
  • JavaScript MVC 學(xué)習(xí)筆記(一)初識JS MVC

    摘要:以基于的富應(yīng)用開發(fā)為主要學(xué)習(xí)資料。下面用實(shí)現(xiàn)一個例子使用匿名函數(shù)來封裝一個作用域在頁面加載時綁定事件監(jiān)聽上面的代碼創(chuàng)建了控制器,這個控制器是放在變量下的命名空間。然后用了一個匿名函數(shù)封裝了一個作用域,以避免對全局作用域造成污染。 公開記錄學(xué)習(xí)JS MVC,不知道能堅(jiān)持多久= =。以《基于MVC的JavaScript web富應(yīng)用開發(fā)》為主要學(xué)習(xí)資料。 什么是MVC MVC 是一種設(shè)...

    xorpay 評論0 收藏0
  • Backbone.js學(xué)習(xí)筆記(一)

    摘要:它通過數(shù)據(jù)模型進(jìn)行鍵值綁定及事件處理,通過模型集合器提供一套豐富的用于枚舉功能,通過視圖來進(jìn)行事件處理及與現(xiàn)有的通過接口進(jìn)行交互。 本人兼職前端付費(fèi)技術(shù)顧問,如需幫助請加本人微信hawx1993或QQ345823102,非誠勿擾 1.為初學(xué)前端而不知道怎么做項(xiàng)目的你指導(dǎo) 2.指導(dǎo)并扎實(shí)你的JavaScript基礎(chǔ) 3.幫你準(zhǔn)備面試并提供相關(guān)指導(dǎo)性意見 4.為你的前端之路提供極具建設(shè)性的...

    FrancisSoung 評論0 收藏0
  • 淺析 web 前端 MVVM

    摘要:它由微軟架構(gòu)師和開發(fā),通過利用微軟圖形系統(tǒng)和的互聯(lián)網(wǎng)應(yīng)用派生品的特性來簡化用戶界面的事件驅(qū)動程序設(shè)計(jì)。微軟的和架構(gòu)師之一于年在他的博客上發(fā)表了。更改時會得到提醒這個情況是一個單向流。 前言 記得四個月前有一次面試,面試官問我 MVVM 是什么,MVVM 的本質(zhì)是什么。我大腦一片混亂,那時我對 MVVM 的認(rèn)知就只是雙向綁定和Vue,以這個關(guān)鍵字簡單回答了幾句,我反問 MVVM 的本質(zhì)是...

    VincentFF 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<