我正在修改几个月前提出的一个问题中的一些代码,但我一直受阻。最重要的是,我将鼠标悬停在 Anchors 上,这意味着淡入相应的 div 并将“highlight”类应用到 Anchor。我可以使用基本 JQuery 并获得“OK”结果,但鼠标事件使用户体验不太流畅。
我通过 Google API 加载 JQuery 1.3。
它似乎有效。我可以使用内置的hover() 或mouseover(),且fadeIn() 完好无损……没有JavaScript 错误等。因此,JQuery 本身显然已“加载”。但是我遇到了一个问题,似乎每个人都推荐 hoverIntent 来解决。
加载 JQuery 后,我加载了 hoverIntent JavaScript。我已经对路径进行了三次检查,甚至对路径进行了防伪检查。我只是没有看到任何合理的方式可以成为路径问题。
一旦(据称)加载了外部 javascripts,我将继续我的页面脚本:
var $old=null;
$(function () {
$("#rollover a").hoverIntent(doSwitch,doNothing)
});
function doNothing() {};
function doSwitch() {
var $this = $(this);
var $index = $this.attr("id").replace(/switch/, ""); //extract the index number of the ID by subtracting the text "switch" from its name
if($old!=null) $old.removeClass("highlight"); //remove the highlight class from the old (previous) switch before adding that class to the next
$this.addClass("highlight"); //adds the class "highlight" to the current switch div
$("#panels div").hide(); //hide the divs inside panels
$("#panel" + $index).fadeIn(300); //show the panel div "panel + number" -- so if switch2 is used, panel2 will be shown
$old = $this; //declare that the current switch div is now "old". When the function is called again, the old highlight can be removed.
};
我收到错误:
错误:$("#rollover a").hoverIntent 不是函数
如果我更改为悬停等已知工作功能(只需将“.hoverIntent”更改为“.hover”),它就会再次“工作”。我确定这是一个基本问题,但在这方面我完全是个黑客(正如您在我的代码中所见)。
现在,对于所有外观,它似乎要么是路径错误(我已经进行了无数次检查,甚至将它放在一个带有 HTTP 链接的外部站点上,我仔细检查过;它没有错),或者 .js 没有' t 声明函数。如果是后者,我必须缺少几行代码才能使该功能可用,但我在作者的网站上找不到任何内容。在他的源代码中,他使用了 $(document).ready,我也试图模仿它,但也许我也做错了。
同样,奇怪的是 .hover 工作正常, .hoverIntent 没有。我不明白为什么它不被认为是一个函数。
尽量避免遗漏任何东西……让我们看看……没有其他 JavaScript 被调用。这篇文章包含页面使用的所有 Javascript...我尝试按照作者的 var 配置示例进行操作(hoverIntent 仍然不是一个函数)。
我有一种痒痒的感觉,我只是错过了一行来声明函数,但我一生都无法弄清楚它是什么,或者为什么它没有在外部 .js 文件中声明。感谢您的任何见解!
格雷格
更新:
最奇怪的事情,因为我在上面......实际上,如果这个问题得到解决,我可能不需要hoverIntent解决:
我向“doNothing”函数添加了一个警报,然后恢复到原来的 .hover,只是为了看看发生了什么。对于我的 5 个 anchor 中的 2 个,只要我悬停,doNothing() 就会被调用并且我看到警报。对于其他 3 个,doNothing() 在 mouseout 之前不会被正确调用。如您所见,相同的功能应该适用于“翻转”div 内的任何 Anchor。我不知道为什么它是特别的。
但:
是否有可能是fadeIn 本身有问题,还是只是我需要给它传递一个适当的回调?如果是这样,我不知道回调会是什么。
为你长时间的注意力干杯...
格雷格
最佳答案
希望我没有浪费太多人的时间...
事实证明,第二个问题也是离屏幕 2 英尺。我怀疑这与 HTML/CSS 有关,因为奇怪的是,5 个元素中只有 2 个表现出奇怪的行为。
所以,检查我的代码,挖出我们的 friend FireBug,发现我将鼠标悬停在另一个与我的翻转 div 重叠的 div 上。原因是?在 CSS 中,我称它为 .panels 而不是 .panel,类名是 .panel。所以,它使用了 div 的默认值......即。 100% 宽度...
问题得到解答...“多加小心”
Matt 和 Mak 强制我无数次检查我的代码,果然我在加载另一个插件并插入我自己的代码后重新加载了 JQuery。由于hoverIntent 修改了JQuery 的hover() 以便工作,重新加载JQuery 把它搞砸了。
这解决了,逻辑要求我重新检查我的 HTML/CSS 以调查我的淡入()怪异......果然,我在类里面有一个错字,造成了一些严重破坏。
哑哑哑……但现在我可以 sleep 了。
关于javascript - JQuery:为什么这里的 hoverIntent 不是函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1237300/