2013-08-07 28 views
2

我發現我的問題是類似於this question。 當我使用事件名稱空間時,即使沒有代理方法,它也不會顯示名稱空間。事件名稱空間不顯示與jquery

HTML

<p>Get the click's namespace</p> 
<button>Remove the click event</button> 

JS

$(document).ready(function(){ 
    $("p").on("click.someNamespace",function(event){ 
    console.log(event.namespace); 
    }); 
    $("button").click(function(){ 
    $("p").off("click.someNamespace"); 
    }); 
}); 
詳細

http://codepen.io/ShawnHuang/pen/zaHui

還有另外一個代碼是成功的,但我不知道什麼是兩個代碼之間的不同。 click this

感謝您的回覆!

回答

2

你可以使用:

event.handleObj.namespace

http://jsfiddle.net/ZHp67/

不知道這是公開支持。

更新:相關DOC可以在這裏找到:https://learn.jquery.com/events/event-extensions/#the-handleobj-object

+0

哦!!你有名字空間! 更多的問題是我的代碼和w3school示例有什麼不同。 第一個可以用event.namespace獲取名稱空間, ,但第二個用event.handleObj.namespace。 –

+1

當觸發特定事件(使用名稱空間)時,爲事件對象設置屬性名稱空間,否則爲空。事件的屬性handleObj似乎在所有情況下都得到了這個屬性集,因爲它是特定於處理事件的對象的,而不是直接的事件。這是我的理解,因爲沒有DOC,我只是在這裏推測 –

+0

@Shawn:正如我已經說過的,在w3school示例中,他們使用'.trigger':'$(this).trigger(「custom。 someNamespace「);'。 –

2

基礎上documentation和例子,我想說,event.namespace是,如果事件與.trigger手動觸發幷包含一個命名空間只能定義爲:主要由插件作者

這很可能會使用誰希望根據所使用的事件名稱空間以不同的方式處理任務。

$("p").trigger("test.something"); 

「正常」鼠標點擊不綁定到任何特定的命名空間。您還可以在w3schools示例中看到他們使用.trigger

+0

我檢查代碼的行爲,它是成功的。我只是困惑,我找不到變量「命名空間」。 也許jquery沒有定義在點擊事件? –

+0

正如我所說的,'event.namespace'只在事件是用'.trigger'以編程方式觸發時才被定義。 –

相關問題