【发布时间】:2010-05-28 11:18:13
【问题描述】:
我正在尝试创建对象数组,以便我可以在 jQuery 中的 for 循环中访问它们,并且我知道这在 Actionscript 中有效,所以我想要做的是将我当前的知识转换为可以工作的 jQuery。
请看看这个并告诉我为什么我无法访问 divToShow
谢谢大家
var homeImages = new Array();
homeImages[0] = { hoverImage: ".leftColImage1", divToShow: ".image1", rollOverImg: "img-family-over.jpg" };
homeImages[1] = { hoverImage: ".leftColImage2", divToShow: ".image2", rollOverImg: "img-students-over.jpg" };
homeImages[2] = { hoverImage: ".leftColImage3", divToShow: ".image3", rollOverImg: "img-pros-over.jpg" };
homeImages[3] = { hoverImage: ".leftColImage4", divToShow: ".image4", rollOverImg: "img-retired-over.jpg" };
var hoverImage;
var activeDiv;
var mainContent = ".mainContent";
for (k = 0; k < homeImages.length; k++) {
homeImages[k].id = k;
$(homeImages[k].hoverImage).mouseover(function() {
//alert("divToShow : " + homeImages[this.id].divToShow);
alert("this : " + this.id);
activeDiv = homeImages[k].divToShow;
$(".leftColImage1 img").attr("src", "/App_Themes/MyChoice2010/Images/" + homeImages[k].rollOverImg);
$(mainContent).hide();
$(homeImages[k].divToShow).slideDown("slow");
}).mouseout(function() {
$(".leftColImage1 img").attr("src", "/App_Themes/MyChoice2010/Images/img-family.jpg");
$(".image1").hide();
$(mainContent).slideDown("slow");
});
}
【问题讨论】:
-
homeImages[k].id = k的目的是什么? -
在 Actionscript 中,您可以将该 id 附加到数组中,然后在函数内部,您可以调用“this.id”来引用该数组中的任何内容。这是一个范围问题,我不知道它在 Javascript 中是否相同。谢谢
-
啊,我怀疑你这里的闭包有问题。你总是得到“.image4”吗?
-
是的,当数组中只有两个 ID 时,我只获得了第二个 ID,所以这很可能是问题所在。有建议吗?
-
是的,你必须在变量上创建一个闭包。请参阅我的新答案。
标签: javascript jquery closures