2013-04-24 60 views
1

我最近發現這個樣子自定義事件.bind('click.myclick',function(){//});和unbind()以及

$('.mybuttons').unbind('click.myclick'); 
$('.mybuttons').bind('click.myclick', function(){ 
    // do something 
}); 

它反應click事件執行// do something代碼。 我感興趣的是它不會干涉 與其他點擊事件。它根本不解除它們。

我不知道事件'click.myclick'可以作爲一個命名的點擊事件。

我在api.jquery.com看過,並且在綁定中看不到這一點。 有人能夠啓發我或指出描述這一點的在線文檔嗎? 我跑了一些測試,如果.換成另一個字符,它不再起作用,這是否意味着myclick是事件點擊的屬性?

回答

9

這被稱爲命名空間事件。通過命名事件間距,您可以選擇性地解除綁定使用任何事件或特定事件的名稱空間綁定的處理程序。

http://api.jquery.com/on/#event-names

$(element).on("click.mynamespace", handler); 
$(element).on("change.mynamespace", handler); 
$(element).on("mouseenter.mynamespace mouseleave.mynamespace", handler); 
$(element).off(".mynamespace"); // unbind all the above events at once, without affecting others 

這是常用的插件用於製造事件和清理更易於管理。

+0

哇,太棒了! jQuery網站是否在他們的文檔中介紹了這一點?我想多閱讀一下 – PrimeLens 2013-04-24 19:59:49

+1

我提供的鏈接部分對此進行了一些解釋,這在「Namespacing Events」中進行了更多解釋http://learn.jquery.com/events/event-basics/ – 2013-04-24 20:03:36

+0

有我所有的讚揚 – PrimeLens 2013-04-24 20:13:09