Я использую hoverIntent, который в рамках своих настроек будет вызывать функцию.Я думаю, это называется «ссылка на функцию» (правильно?):
var HIconfig = {
interval: 250,
sensitivity: 8,
over: myFunction,
timeout: 100,
out: myOtherFunction
};
Однако я бы хотел использовать эту функцию время от времени и явно передавать объект jQuery.Итак, я добавил это к функции.
myFunction($myObject){
}
Теперь задача состоит в том, чтобы выяснить, когда функция вызывается из hoverIntent или вызывается явно.Я думал, что проверю, содержит ли $ (this) определенный элемент DOM:
myFunction($myObject){
if($(this).is('li')){
$myObject = $(this)
};
$myObject.doSomething...
}
Но ... У меня проблемы.Если я выйду из системы как $ (this), так и $ myObject, это будет результат:
Вызывается через hoverIntent:
$(this) = [li#Trigger-0.nav-main-tab]
$myObject = Object { originalEvent=, more...}
Вызывается через явную передачу объекта
$(this) = [Window PT02-home-page.php#]
$myObject = [li#Trigger-0.nav-main-tab]
Я могу проверить на $(this).is('li')
в первом сценарии, поскольку это правда.
Не могу за секунду, хотя, как и при попытке выполнить тест, Firefox это не нравится:
g.nodeName is undefined
Одним из предложений было переключиться на 1.4.1и попробуйте проверить обратное с помощью .isPlayObject:
if (jQuery.isPlainObject($myObject))...
Это прекрасно работает в Firefox.Тем не менее, IE8 всегда возвращает истину.
Мои вопросы:
Является ли моя логика простой с точки зрения того, как моя функция вызывается из hoverIntent или напрямую?
Если нет, то есть ли способ последовательно проверить, передал ли я явно объект в мою переменную в функции?