使用带有setTimeout的悬停链接更改图像
Change image using hover over link with setTimeout
我正在设计一个超级菜单,并希望根据悬停的链接更新div中的图像。我要做的是等待代码的mouseleave部分,这样,如果用户立即移动到下一个LI标记,代码的mouseleaveouseenter另一个LI,则执行此mouseleave代码。
问题是#1可以返回值,但#2给出了一个"未定义"的值。为什么会这样?我该如何解决?如何获取在setTimeout函数内悬停的当前LI的属性?因为一旦我有了这个值,我就可以进行比较来控制流量。非常感谢。
// FADE IN THE IMAGE ACCORDING TO THE MENU ITEM
// HTML=<li><a data-pos="left -256px" href="somelink">Link A</a></li>
var $sprite = $('#photo');
$('li>a').hover(
function() {
sprite_pos=$(this).attr('data-pos'); // fetch value for the tag
// Put an if otherwise this code gets executes for all li>a creating an unnecessary fade-in out effect
if(typeof(sprite_pos) != "undefined") {
$sprite.fadeTo(200, 0, function() {
$sprite.css("background-position",sprite_pos); });
$sprite.fadeTo(200, 1);
}
},
function() {
//sprite_pos=$(this).attr('data-pos'); // #1
setTimeout( function() {
sprite_pos=$(this).attr('data-pos'); // #2 fetch value for the tag
if(typeof(sprite_pos) != "undefined" ) {
$sprite.fadeTo(200, 0, function() {
$sprite.css("background-position",default_pos); });
$sprite.fadeTo(200, 1);
} // if(typeof(sprite_pos) != "und ...
}, 2000 );
}
); // $('li>a').hover( ...
当调用setTimeout
时,this
将成为window
对象。要修复,只需创建对原始this
上下文的引用:
function() {
var me = this;
setTimeout( function() {
sprite_pos=$(me).attr('data-pos'); // #2 fetch value for the tag
/// ^^
/// ... rest of code
相关文章:
- 如果显示当前图像,则禁用链接
- Javascript图像链接
- 更改标记.js图像/链接表达式
- 如何使用javascript从文件夹中获取图像并发布直接链接
- 当页面包含指向一个图像的多个链接时,fancyBox会复制缩略图辅助图像
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- javascript 将 IMG 标签中的图像转换为 标签中的实际链接图像
- 一键在一个窗口中打开两个不同的链接图像
- 如何使用 jquery 调整超链接图像的大小
- 重写:导航链接图像按钮效果
- 切片盒,链接图像
- 悬停时更改链接图像
- 在Javascript中使用href=mailto链接图像
- 鼠标悬停时链接图像
- 链接图像到网页链接
- 超链接图像不显示Chrome扩展
- 基于ALT标签的链接图像
- 在基于活动链接图像的导航中改变背景位置
- 将文本和超链接图像添加到表格单元格
- 如何在此代码片段中定位链接图像而不是链接文本