6
我發現自己經常需要綁定一個事件處理程序,並且立即在jQuery中執行該處理程序。到今天爲止,我一直在使用這種懶惰的人造格局保持代碼的DRY:jQuery - 綁定並執行一個處理程序?
$(...).bind('event', function() {
...
}).trigger('event');
今天,我被這咬傷,由於其他處理程序已經被綁定到event
的事實,他們是當我以這種方式觸發事件時也會執行,但是會造成很多問題,因爲當時它們不應該被執行。
要解決這個問題,我已經改變了模式,以這樣的:
var handler = function() {
...
};
var element = $(...);
element.bind('event', handler);
handler.call(element);
這工作我所期望的方式,但它的醜陋罪和相當冗長,所以我考慮封裝這種模式成jQuery插件:
$(...).bindAndExecute('event', function() { ... });
我能找到jQuery.bind()
期權或任何其他方法沒有類似這一點,但我可能錯過了一些東西。有沒有更簡潔的做法,我沒有想到?我不想重新發明輪子。
我不明白這個建議。你能解釋一下嗎? – FtDRbwLXw6 2012-07-10 19:57:30
我沒有使用自定義事件,所以我不確定這是如何適用於我的情況。謝謝你盡你所能的幫助。 – FtDRbwLXw6 2012-07-10 19:58:55
@drrcknlsn,你也可以命名空間「標準」事件。 – 2012-07-10 19:59:26