在 for 循环中添加 jQuery 悬停效果不起作用
正如标题所说,我尝试在 for 循环中向不同的 a 标签添加 jquery 悬停效果。添加了悬停效果,但内部的隐藏显示功能似乎是错误的。我总是得到最后一个 li 元素的选择器。
任何帮助都会很棒。
这是代码:
html:
<a id="o1" href="#">Show Text 1</a>
<a id="o2" href="#">Show Text 2</a>
<a id="o3" href="#">Show Text 3</a>
<a id="o4" href="#">Show Text 4</a>
<a id="o5" href="#">Show Text 5</a>
<ul class="subTxt">
<li id="u1">Text 1</li>
<li id="u2">Text 2</li>
<li id="u3">Text 3</li>
<li id="u4">Text 4</li>
<li id="u5">Text 5</li>
</ul>
javascript:
/* Hide li's */
$("ul.subTxt").find("li").each(
function() {
$(this).hide();
});
/* Add Hover-Events */
for (var a = 1; a < 6; a++) {
var k = '#o' + a;
var e = '#u' + a;
$(k).hover(
function() {
$(e).show();
$(this).append('<div id="hk" style="position: relative;float: right;">' + k + ' ' + e + '</div>');
}, function() {
$(e).hide();
$(this).find('#hk').remove();
});
}
As the title says, i try to add a jquery hover effect to different a-tags within a for loop. The hover-effects are added but the hide-show-functionality inside seems to be wrong. i always get the selector for the last li-element.
Any help would be great.
here's the code:
html:
<a id="o1" href="#">Show Text 1</a>
<a id="o2" href="#">Show Text 2</a>
<a id="o3" href="#">Show Text 3</a>
<a id="o4" href="#">Show Text 4</a>
<a id="o5" href="#">Show Text 5</a>
<ul class="subTxt">
<li id="u1">Text 1</li>
<li id="u2">Text 2</li>
<li id="u3">Text 3</li>
<li id="u4">Text 4</li>
<li id="u5">Text 5</li>
</ul>
javascript:
/* Hide li's */
$("ul.subTxt").find("li").each(
function() {
$(this).hide();
});
/* Add Hover-Events */
for (var a = 1; a < 6; a++) {
var k = '#o' + a;
var e = '#u' + a;
$(k).hover(
function() {
$(e).show();
$(this).append('<div id="hk" style="position: relative;float: right;">' + k + ' ' + e + '</div>');
}, function() {
$(e).hide();
$(this).find('#hk').remove();
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以将其简化为:
http://jsfiddle.net/petersendidit/pGgeW/3/
You can simplify it to this:
http://jsfiddle.net/petersendidit/pGgeW/3/
请查看这个小提琴: http://jsfiddle.net/pGgeW/9/
HTML:
几个注释:
.hide()
这样的操作,它会将其应用于整个集合。如果您编写for
循环来迭代 jQuery 集合,那么您就错了。Please review this fiddle: http://jsfiddle.net/pGgeW/9/
HTML:
Couple notes:
.hide()
, it applies it to the entire collection. If you write afor
loop to iterate over a jQuery collection, you're doing it wrong.问题是
e
和k
变量是全局的。一种选择是将代码包装在函数中。这样e
和k
对于该函数来说是本地的。像这样:http://jsfiddle.net/pGgeW/8/
The problem is that the
e
andk
variables are global. One option would be to wrap that code in a function. This waye
andk
are local to that function. Like so:http://jsfiddle.net/pGgeW/8/