简单,jquery .hover无法正常工作

时间:2013-06-07 19:23:28

标签: jquery

我很遗憾地问这个,但我已经尝试了所有的事情(我知道并了解)并且无法使其发挥作用。

$("nav > ul > li").hover(function () {
    var underground = $(this).attr('title');
    $("#womble").html(underground);
},function () {
    $("#womble").html(overground);
});

这是在调用Jquery1.7.2之后调用的外部脚本文件中。 我不愿把它放在一个函数中并通过HTML DOM onmouseover事件处理程序调用它。

我是否无法在$(this)范围内定义function(){}中的变量? 或者这是对的,它只是因为其他原因而没有触发?

变量“overground”在其他地方全局定义。 是的,html <li>标签有"title="而不是"Title=" - 所以我已经检查过了......我确信它是简单明了的东西。为我的无知和/或愚蠢而再次道歉。

HTML是:

<nav>
<ul>
<li title="Wombling free"><a></a></li>
<li title="the wombles of"><a></a></li>
<li title="Wimbledon Common"></li>
<li title="are we"></li>
</ul>
</nav>

谢谢大家,我曾尝试将代码放在$(document).ready函数中十几次,但现在它可以工作了! ...非常赞赏所有的建议。我想我不太了解事件处理程序,因为我认为这不会有任何区别。我原以为代码只会被悬停事件触发。但很明显它必须在document.ready中,以便jquery可以用相关元素以某种方式注册它。虽然我曾尝试将代码放入文档就绪函数中。

它现在正在工作,实际上我不知道我之前和现在之间的差异/错误是什么! 我把它全部放在一个函数中并将它放在document.ready函数中。我的文档末尾一定有一个小的语法错误。准备好的部分,或者我曾经尝试过直接在十几次之前直接输入代码的东西。感谢大家的快速反应。如果你不知道什么是womble,这是一个儿童节目,讲的是从20世纪70年代开始在温布尔登网球公开赛上捡垃圾的人。是的,我已经老了;可能是为什么我这么暗淡。

2 个答案:

答案 0 :(得分:0)

在外部脚本文件中插入以下行:

console.log($("nav > ul > li").length); // should log a number > 0
console.log($("#womble").length);       // should log a number > 0
console.log(overground);                // should log a defined value
// just before the problem function
$("nav > ul > li").hover(function () {
    var underground = $(this).attr('title');
    $("#womble").html(underground);
},function () {
    $("#womble").html(overground);
});

检查浏览器控制台。输出是预期的吗?

答案 1 :(得分:-1)

如果在通过AJAX调用HTML之前调用jQuery脚本,那么当jQuery尝试挂钩事件时,页面中将不存在HTML。

相反,只需在AJAX加载页面后调用jQuery脚本即可。通过你不指定你是否使用AJAX,我遇到了同样的问题,并使用这个相同的方法来解决它。