【发布时间】:2010-10-26 09:45:33
【问题描述】:
这似乎是一个简单的问题,我希望你能帮助我。 我想补充一点,我的代码按照我描述的方式工作。我不满足于解决我在 for 循环外增加 [i] 的问题的方式。
我想要的是在将鼠标悬停在图像上时显示一个侧边栏菜单。
我的 CSS 看起来像:
GM_addStyle
(
'.colormenu { \
display:none; \
margin-left: 10px; \
margin-top: -55px; \
} \
.colormenu a { \
display: block; \
width: 30px; \
} \
.colorlist { \
list-style-type: none; \
} \
'
);
现在我定义了两个变量。一个包含一些颜色,另一个包含一些水果。
var color = ['red','yellow','green','blue'];
var fruit = ['strawberry','banana','apple','blueberry'];
然后我定义了两个数组:
var hoverstring = new Array(color.length);
var idstring = new Array(color.length);
现在我想看看 var color 元素的值是否与网站上的图像标题匹配。 对于每个小于 var color 长度的元素,我在一个列表中创建两个链接,由 div 包裹,并将其插入到包裹 img 元素的 href 之后。
for (var i=0;i<color.length;i++) {
$("<div id='colormenu"+i+"' class='colormenu'><ul class='colorlist'><li><a href='path"+color[i]+"'>Call</a></li><li><a href='path"+color[i]+"'>Chat</a></li></ul><div>").insertAfter("a[href$='"+fruit[i]+"']");
hoverstring[i]="img[title$='"+fruit[i]+"']:first";
idstring[i]="#colormenu"+i;
}
我采取的最后一步也是我遇到问题的地方是为每个元素创建一个函数。这只是它的外观示例:
$(hoverstring[0]).hover(function(){
$(idstring[0]).toggle();
});
$(hoverstring[1]).hover(function(){
$(idstring[1]).toggle();
});
$(hoverstring[2]).hover(function(){
$(idstring[2]).toggle();
});
$(hoverstring[3]).hover(function(){
$(idstring[3]).toggle();
});
$(hoverstring[4]).hover(function(){
$(idstring[4]).toggle();
});
$(hoverstring[5]).hover(function(){
$(idstring[5]).toggle();
});
这种方法有效,但我会说不是很方便。我不想创建大量函数,而是想增加 i 而不是手动操作。
喜欢:
for (var i=0;i<color.length;i++) {
$("<div id='colormenu"+i+"' class='colormenu'><ul class='colorlist'><li><a href='path"+color[i]+"'>Call</a></li><li><a href='path"+color[i]+"'>Chat</a></li></ul><div>").insertAfter("a[href$='"+fruit[i]+"']");
hoverstring[i]="img[title$='"+fruit[i]+"']:first";
idstring[i]="#colormenu"+i;
$(hoverstring[i]).hover(function(){
$(idstring[i]).toggle();
});
}
我尝试了几次,但由于某种原因,我没有在 for 循环中递增。你知道为什么吗?
我真的希望你能帮助我。提前谢谢你。
【问题讨论】:
标签: javascript jquery for-loop