我有一组列表项,我想使用eq()来淡化()和fadeOut()。如果我的代码看起来很糟糕,我也很难发帖,很抱歉!
<ul id="skater_mulitivew">
<li class="first_gallery"></li>
<li class="second_gallery"></li>
<li class="third_gallery"></li>
<li class="fourth_gallery"></li>
</ul>
和我的jQuery / JS:
<script>
$('.right_trigger').click(function(event) {
var i=0;
event.preventDefault();
while (i<5) {
$('#skater_mulitivew li').eq(0).fadeOut('slow');
$('#skater_mulitivew li').eq(1).fadeOut('slow');
i++;
};
});
</script>
它运行一次,但是当我重新单击.right_trigger项时,它不再运行。我想在每次点击时循环浏览每个列表项。感谢您的任何意见!
答案 0 :(得分:1)
i
具有全局范围,因此下次循环尝试迭代i
= 5时,这会导致循环不迭代。将i
的声明移到匿名函数中。
$('.right_trigger').click(function(event) {
var i=0;
event.preventDefault();
while (i<5) {
$('#skater_mulitivew li').eq(0).fadeOut('slow');
$('#skater_mulitivew li').eq(1).fadeOut('slow');
i++;
});
});
另一方面,我不确定为什么要调用fadeOut()
函数5x。您可以通过以下方式实现相同的效果:
$('.right_trigger').click(function(event) {
event.preventDefault();
//If your trying to fadeout all li use the proceeding commented code
//$('#skater_mulitivew li").fadeOut("slow");
//If your actually trying to target by index use the proceeding code
$('#skater_mulitivew li:eq(0),#skater_mulitivew li:eq(1) ').fadeOut('slow');
i++;
});
鉴于评论显示您想要制作类似旋转木马的功能。这是发生这种情况的html,css和javascript。
<强> HTML 强>
<ul id="skater_mulitivew">
<li class="first_gallery">Gallery 1</li>
<li class="second_gallery">Gallery 2</li>
<li class="third_gallery">Gallery 3</li>
<li class="fourth_gallery">Gallery 4</li>
</ul>
<div class="right_trigger">Trigger</div>
<强> CSS 强>
#skater_mulitivew li{
display:none;
}
#skater_mulitivew li:first-child{
display: block;
}
<强>的Javascript 强>
$('.right_trigger').click(function(event) {
var items = $("#skater_mulitivew li");
toggle(items,0);
});
function toggle(items, index){
items.eq(index).fadeOut('slow', function(){
index = (index == items.length -1) ? -1:index;
items.eq(index + 1).fadeIn('slow', function(){
toggle(items, ++index);
});
});
}
答案 1 :(得分:1)
肯定会有一次因为1
0
已经淡出
<script>
var i=0;
$('.right_trigger').click(function(event) {
event.preventDefault();
while (i<5) {
var next = i + 1;
$('#skater_mulitivew li').eq(i).fadeOut('slow');
$('#skater_mulitivew li').eq(next).fadeOut('slow');
i = i + 2;
}
});
</script>
您还应在html <ul id="#skater_mulitivew">
至<ul id="skater_mulitivew">
<强> FIDDLE 强>
答案 2 :(得分:0)
是的,i
是全局设置的,当你再次调用时,它超出了while条件的范围。
答案 3 :(得分:0)
我认为你的脚本没有做你认为应该用while循环做的事情,但你的主要问题实际上是语法错误。
<ul id="#skater_mulitivew">
应该是
<ul id="skater_mulitivew">
请注意无关的哈希。
});
});
应该是
}
});
注意无关的括号和分号。
修复这两个错误会导致前两个li
项在点击时淡出。