最近才發現 jQuery event.namespace 可以讓你只移除自己註冊的 event listener 而不移除其他人註冊的。
往常我們多半指定 event type 來註冊:
$(document).bind('mouseup', myListener);
並指定同一個 event type 來移除:
$(document).unbind('mouseup');
但有時候你使用別人的 widget 或 library 也許它也註冊了同樣事件的 listener,或是你不確定有沒有,為了避免不小心 unbind 其他人的 listener,我可以在註冊加上 namespace 如:
$(document).bind('mouseup.line', myListener);
.line
就是自訂的命名空間。
然後可以移除該 namespace 的所有 listener:
$(document).unbind('.line');
這時如果 document 上也有別人註冊的 mouseup 就不會被你呼叫的 unbind()
移除。
留言