1

我真的很抱歉问这个问题,但我已经尝试了一切(我知道并理解)并且无法让它发挥作用。

$("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 是什么,那是一个关于会说话的熊的儿童节目,它从 1970 年代开始在温布尔登公地捡垃圾。是的,我已经那么老了;大概是为什么我这么昏暗。

4

2 回答 2

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);
});

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

于 2013-06-07T20:00:24.843 回答
-1

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

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

于 2015-11-13T19:34:33.503 回答