如何在我的觸發代碼中知道preventDefault
已被調用?jQuery:如何將event.preventDefault()與自定義事件一起使用?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
如何在我的觸發代碼中知道preventDefault
已被調用?jQuery:如何將event.preventDefault()與自定義事件一起使用?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
觸發()也可以採取一個事件對象,因此,如果您可以創建一個事件對象,像這樣:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
,那麼你可以檢查後觸發看如果preventDefault()被如此調用:
var prevented = event.isDefaultPrevented();
據我所知,「的preventDefault()」調用有關防止本機瀏覽器響應之類的文本字段中的錨標記上或按鍵點擊。一旦事件處理週期結束,它就結束了。對於彌補事件,我認爲它沒有任何影響,因爲它全部關於jQuery事件處理系統,而不是關於本地瀏覽器功能。
您的代碼可能會在某處設置某種標誌以便與「外部世界」進行通信。
ooh你可以嘗試讓處理程序在事件對象的某個地方隱藏一個引用,讓外部代碼可以找到它,然後在外部檢查「isDefaultPrevented()」。但我不知道這是否可行。
如果你問如何找出默認是否已被阻止,使用:
event.isDefaultPrevented()
這將基於與否的preventDefault返回「真」或「假」( ) 被稱爲。
自定義事件沒有發生某些默認操作(它們是自定義的)。
在另一方面,如果你想停止這個事件給他人的冒泡效果,然後看看triggerHandler
不冒泡的層次..
,如果它是一個自定義事件..有應該不是默認操作。 – 2010-02-09 14:20:58
如果處理程序也用於非自定義事件,它仍然可以用於事件機制。 – 2010-02-09 15:02:29
如果你的自定義事件真的是自定義的,那麼你想要防止什麼?通常使用preventDefault,以便瀏覽器不會執行正常的操作。瀏覽器本身不知道或關心自定義事件。 – 2010-02-09 14:20:10