gpt4 book ai didi

javascript - 将变量传递给 :eq jquery selector in a while loop

转载 作者:行者123 更新时间:2023-11-30 08:55:23 28 4
gpt4 key购买 nike

我正在尝试分配 jquery hover <ul> 中所有元素的函数使用此代码列出:

var element = 0;
var length = $(".artist-list-link").length;
while (element<length) {
$(".artist-list-link:eq("+element+")").hover(function() {
$(".artist-back:eq("+element+")").css('display','block');
$(".artist-hover:eq("+element+")").fadeIn(100);
}, function() {
$(".artist-back:eq("+element+")").css('display','none');
$(".artist-hover:eq("+element+")").fadeOut(100);
});
element++;
};

标记如下所示:

<ul>
<li><a class="artist-list-link" href="">Artist 1</a></li>
<li><a class="artist-list-link" href="">Artist 2</a></li>
<li><a class="artist-list-link" href="">Artist 3</a></li>
<li><a class="artist-list-link" href="">Artist 4</a></li>
<li><a class="artist-list-link" href="">Artist 5</a></li>
</ul>

我还为每位艺术家准备了一些 div(我删除了所有链接,只是为了使其更具可读性。

<div class="artist-thumbnail artist-size">
<div class="artist-card artist-size artist-hover"></div>
<div class="artist-card artist-size"><img src="" /></div>
<div class="artist-card artist-size artist-back">Artist 1</div>
</div>

但是上面的循环并没有真正起作用,尽管下面的代码可以完美地工作:

$('.artist-list-link:eq(0)').hover(function() {
$('.artist-back:eq(0)').css('display','block');
$('.artist-hover:eq(0)').fadeIn(100);
}, function() {
$('.artist-back:eq(0)').css('display','none');
$('.artist-hover:eq(0)').fadeOut(100);
});

可能是什么问题?感谢您的回答。

最佳答案

那是因为回调被调用时element发生了变化

你可以这样做:

while (element<length) {
(function(element) {
$(".artist-list-link:eq("+element+")").hover(function() {
$(".artist-back:eq("+element+")").css('display','block');
$(".artist-hover:eq("+element+")").fadeIn(100);
}, function() {
$(".artist-back:eq("+element+")").css('display','none');
$(".artist-hover:eq("+element+")").fadeOut(100);
});
})(element);
element++;
};

这在闭包中保护了元素的值。

关于javascript - 将变量传递给 :eq jquery selector in a while loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com