簡體   English   中英

jQuery:確定函數是否被調用為jQuery事件處理程序(回調)

[英]jQuery: determine if a function was called as a jQuery event handler (callback)

我有一個JavaScript函數,可以直接調用,作為jQuery事件的回調。

在后一種情況下,jQuery Event對象將作為參數傳遞。 當我直接調用函數時,我還提供了一個參數(不同類型,但仍然是一個Object)。

因此,我需要能夠檢查(在函數體內)如何調用函數,以便知道它正在處理什么類型的參數。

有一個簡單的方法嗎?

接受參數,然后看看它是否是jQuery.Eventinstanceof

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM