在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原始碼的分析,又看了很多例項...