javascript – jQuery,悬停方法和闭包
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery,悬停方法和闭包,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2065字,纯文字阅读大概需要3分钟。
内容图文
![javascript – jQuery,悬停方法和闭包](/upload/InfoBanner/zyjiaocheng/757/7004be9795fa4f0d9fe9e7c1c4b1f477.jpg)
一直试图围绕功能范围包围大脑的Javascript关闭一直在努力,但我认为他们正在缠绕我.我看了很多帖子(Nyman是最有帮助的),但显然仍然没有得到它.试图在jQuery中对悬停方法运行循环.需要悬停功能才能最终触发多个动作,但是很高兴让他们现在可以使用单个图像交换.
$(document).ready(function() {
imageSource = [];
imageSource[0] = 'images/img0.png' //load 0 position with "empty" png
imgArea = [];
for (var i=1; i<11; i++) {
(function( ){ //anonymous function for scope
imageSource[i] = 'images/img' + i + '.png';
imgArea[i] = '#areamap_Img' + i;
// running console.log here gives expected values for both
$(imgArea[i]).hover( //imgArea[i] (selector) works correctly here
function() {
$('#imgSwap').attr('src',imageSource[i]); // imageSource[i] is undefined here
},
function() {
$('#imgSwap').attr('src','images/img0.png');
});
})(); // end anonymous function and execute
}; // for loop
});
尝试使用匿名函数从另一个jQuery帖子中进行作用域的想法.似乎工作正常,但在第一个悬停函数中抛出一个未定义的数组值,我想因为它是一个内部函数(硬编码图像源在那里正常工作).
解决方法:
你的闭包确实存在问题,它与你对var i的使用有关.由于您的匿名函数没有i的本地版本,因此它使用的是上面函数的版本.但是,当它试图在以后访问i时,i == 11(因为那是使循环终止的原因).要解决这个问题,你需要在每个匿名函数中声明一个本地版本的i,如下所示:
for (var i=1; i<11; i++) {
(function( ){ //anonymous function for scope
var index = i; // The important part!
// It's not technically necessary to use 'index' here, but for good measure...
imageSource[index] = 'images/img' + index + '.png';
imgArea[index] = '#areamap_Img' + index;
$(imgArea[index]).hover(
function() {
$('#imgSwap').attr('src',imageSource[index]); // Here's where `index` is necesssary.
},
function() {
$('#imgSwap').attr('src','images/img0.png');
});
})(); // end anonymous function and execute
}; // for loop
此外,您的代码中存在一个小问题,您应该为好的方法进行修复.您没有正确访问本地变量;你应该使用:
var imageSource = [];
var imageSource[0] = 'images/img0.png' //load 0 position with "empty" png
var imgArea = []
没有“var”,您将声明并访问全局变量. (如果这是你的预期行为,那么我道歉.)
内容总结
以上是互联网集市为您收集整理的javascript – jQuery,悬停方法和闭包全部内容,希望文章能够帮你解决javascript – jQuery,悬停方法和闭包所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。