gpt4 book ai didi

javascript - 我如何检测函数何时作为 jQuery 回调调用与直接调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:39:16 24 4
gpt4 key购买 nike

我正在使用 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 始终返回 true。

我的问题:

  1. 就我的函数如何从 hoverIntent 调用与直接调用而言,我的逻辑是否有偏差?

  2. 如果没有,是否有一种方法可以始终如一地进行测试,看看我是否已将对象显式传递给函数中的变量?

最佳答案

我会以完全不同的方式来做这件事。首先,函数将 jQuery 对象作为参数很奇怪。走 jQuery 的路,把你的函数变成一个 jQuery 插件。为了在您的 hoverIntent 配置中使用,您可以将您的函数包装在另一个小函数中,或者使用新的 (1.4) jQuery.proxy() 函数来实现。

关于javascript - 我如何检测函数何时作为 jQuery 回调调用与直接调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com