我很遗憾地问这个,但我已经尝试了所有的事情(我知道并了解)并且无法使其发挥作用。
$("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年代开始在温布尔登网球公开赛上捡垃圾的人。是的,我已经老了;可能是为什么我这么暗淡。
答案 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,我遇到了同样的问题,并使用这个相同的方法来解决它。