[英]jQuery: determine if a function was called as a jQuery event handler (callback)
我有一個JavaScript函數,可以直接調用,作為jQuery事件的回調。
在后一種情況下,jQuery Event對象將作為參數傳遞。 當我直接調用函數時,我還提供了一個參數(不同類型,但仍然是一個Object)。
因此,我需要能夠檢查(在函數體內)如何調用函數,以便知道它正在處理什么類型的參數。
有一個簡單的方法嗎?
接受參數,然后看看它是否是jQuery.Event
的instanceof
:
function yourFunction(e) {
if (e instanceof jQuery.Event) {
// ...it was an event handler call
}
}
不過,我建議避免這種事情。 相反,我建議讓事件處理程序調用目標函數(而不是使用目標函數作為實際的事件處理程序),如果你需要根據它的調用方式區分行為。
從您對該問題的評論:
我簡單的嘗試是:當直接調用函數時,我在第一個位置使用空值,在第二個位置使用有用的參數。
在這種情況下,它更容易:
function yourFunction(e) {
if (e) {
// ...it was an event handler call -- or at least,
// a non-falsey argument of some kind was passed in
}
}
您甚至不必將null
傳遞給函數,只需在沒有參數的情況下調用它。 當你這樣做時, e
將是undefined
,這是假的。 (事件對象jQuery傳遞處理程序永遠不會是假的。)
在if條件中嘗試typeof()運算符。 如果參數類型相同,您可以嘗試在兩種情況下分配傳遞對象/事件的唯一屬性,然后再次檢查該屬性...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.