談談jquery的事件名稱和命名空間

2021-08-07 21:57:25 字數 2465 閱讀 6491

在jquery的官方api中,有對命名空間的一些描述,位址是: 這裡面有一些英文介紹,題目是「event names and namespaces」下面有一些介紹。 假如一些朋友不是很理解的話,我在這裡簡單的介紹一下!

我們先看一些**:

$

(「#haorooms

」).on

("click.a"

,function

(){});

$(「#

haorooms

」).on

("click.a.bb"

,function

(){});

$(「#

haorooms

」).on

("dbclick.a"

,function

(){});

$(「#

haorooms

」).on

("mouseover.a"

,function

(){});

$(「#

haorooms

」).on

("mouseout.a"

,function

(){});

當然,我們也可以用bind進行事件繫結。我們看到上面的**,我們可以在事件後面,以點號,加我們的名字,就是事件命名空間。所謂事件命名空間,就是事件型別後面以點語法附加乙個別名,以便引用事件,如」click.a」,其中」a」就是click當前事件型別的別名,即事件命名空間。

假如我們要刪除如下命名空間:

$

(「#haorooms

」).on

("click.a.bb"

,function

(){});

我們可以用:

$

(「#haorooms

」).off

("click.a.bb"

);//直接刪除bb命名空間 【推薦】

$(「#

haorooms

」).off

(".bb"

);//直接刪除bb命名空間 【推薦】

$(「#

haorooms

」).off

(".a"

);//刪除.a命名空間下面所有的子空間【包括.a.bb .a.cc等等,.a是.bb的父級,因此.a下面的都會刪掉】

$(「#

haorooms

」).off

("click"

);//直接解綁click,下面的命名空間都會刪除。

要注意的是:

假如我們寫了如下**:

$

(「#haorooms

」).on

("click"

,function

(){});

$(「#

haorooms

」).on

("click.a"

,function

(){});

$(「#

haorooms

」).on

("click.a.bb"

,function

(){});

那麼我們要用trigger觸發click事件,也就是觸發第乙個,豈不是把click.a和click.a.bb都觸發了,那如何解決這個問題呢,我只想觸發click,而不觸發click.a及以下的命名空間?

沒關係! 有如下解決辦法:

如果事件型別後面附加感嘆號,則表示觸發不包含命名空間的特定事件型別。

假如我們只想觸發click,可以這麼寫:

$

(「#haorooms

」).trigger

("click!"

)

只觸發bb,可以這麼寫:

$

(「#haorooms

」).trigger

("click.a.bb"

);

有了命名空間,可以方便我們在同乙個事件上面做管理啦!!!

我在這裡就不多描述了!所有自定義事件都可以通過jquery方法觸發,例如下面的示例自定乙個delay事件型別,並把它繫結到input元素物件上,然後在按鈕單擊事件中觸發自定義事件。

$

("input"

).bind

("delay"

,function

(event

),1000

);});$(

"input"

).click

(function

());

自定義事件不是真正意義上的事件,可以把它理解為自定義函式,觸發自定義事件就相當於呼叫自定義函式。

jQuery的事件和動畫

1.偵聽事件 div on click.a function 2.僅用一次的事件 div one click function 3.事件的第二位除了可以是事件函式,還可以加入事件偵聽傳遞的引數 var obj 事件的第二位除了可以是事件函式,還可以加入事件偵聽傳遞的引數 div on click o...

談談jquery的實現

最近寫了些移動端的專案,在pc端操作dom,jquery必不可少。但是在移動端引入jquery就顯得不合適,一是檔案太大,二是不支援一些觸控。zepto.js是移動端的jquery,體積很小,支援觸控。在用這些庫的時候,經常會想該如何實現這樣的寫法呢?看了很多jquery原始碼的分析,又看了很多例項...

談談jquery的實現

最近寫了些移動端的專案,在pc端操作dom,jquery必不可少。但是在移動端引入jquery就顯得不合適,一是檔案太大,二是不支援一些觸控。zepto.js是移動端的jquery,體積很小,支援觸控。在用這些庫的時候,經常會想該如何實現這樣的寫法呢?看了很多jquery原始碼的分析,又看了很多例項...