jQuery fadeIn 元素一次一个 onClick
jQuery fadeIn elements one at a time with onClick
我正在尝试创建一个非常基本的幻灯片,用户可以在其中单击后退或下一个箭头以查看上一个或下一个元素。 我发现了与此类似的各种问题,但它们是自动转换;我正在寻找一次切换一个的元素。如果单击"下一步",则应向前移动,如果单击"后退",则应返回。 如果有人从第一次点击回来,它应该显示最后一次;如果他们在最后一个时单击"下一步",它将返回到第一个。
我目前在多个元素中循环的代码。 我是新手,所以我很难弄清楚如何让它一次只去一个。这必须与jQuery 1.3.2一起使用,因为我使用的网站已经加载了该库,我们无法更新它。
它不一定是 LI,如果出于某种原因更好,也可以是div。任何关于如何实现的建议,不胜感激。
这是我的小提琴的链接,但基本的HTML将是:
<div id="arrow-next"></div>
<div id="arrow-back"></div>
<ul class="services">
<li style="display: block;">slide 1</li>
<li>slide 2</li>
<li>slide 3</li>
<li>slide 4</li>
<li>slide 5</li>
<li>slide 6</li>
</ul>
.css:
ul.services li{
height: 500px;
width: 980px;
border: 1px solid #ccc;
text-align: center;
list-style-type: none;
position: absolute;
top: 0;
left: 0;
display: none;
background-color: #fff;
}
ul.services {
display: inline-block;
position: relative;
}
jquery:
$(document).ready(function() {
$("#arrow-next").click(function() {
$('ul.services li').fadeOut(function(){
$(this).next().fadeIn('slow');
});
});
$("#arrow-back").click(function() {
$('ul.services li').fadeOut(function(){
$(this).prev().fadeIn('slow');
});
});
});
提前感谢您提供的任何帮助。 我找到了这篇文章并尝试像这样更新,但它并没有改变我已经拥有的代码会发生什么。
$(document).ready(function() {
$("#arrow-next").click(function() {
$('ul.services li').fadeOut(function(){
$(this).next().fadeIn('slow', function(){
$(this).prev().fadeOut('slow');
});
});
});
$("#arrow-back").click(function() {
$('ul.services li').fadeOut(function(){
$(this).prev().fadeIn('slow');
});
});
});
这样的东西?
$(document).ready(function () {
$("#arrow-next").click(function () {
$('ul.services li:visible').fadeOut(function () { //select only the visible element
var $next = $(this).next(); //get the next element
var $target = $next.length ? $next : $('ul.services li:first'); //if there is no next then switch the pointer to point to the first one.
$target.stop(true,true).fadeIn('slow'); //now fadeIn the target element.
});
});
$("#arrow-back").click(function () {
$('ul.services li:visible').fadeOut(function () {
var $prev = $(this).prev(); //get the prev element
var $target = $prev.length ? $prev : $('ul.services li:last');//if there is no next then switch the pointer to point to the last one.
$target.stop(true,true).fadeIn('slow');//now fadeIn the target element.
});
});
});
小提琴
问题是这部分:
$('ul.services li')
匹配所有<li>
元素,以便它们全部淡出,然后下一个元素(针对每个元素)淡入。
如果这样做:
$("#arrow-next").click(function() {
$('ul.services li:visible').fadeOut(function(){
$(this).next().fadeIn('slow');
});
});
$("#arrow-back").click(function() {
$('ul.services li:visible').fadeOut(function(){
$(this).prev().fadeIn('slow');
});
});
您将能够上下移动,但最后一个的"向上"不会在第一个中消失。(主要区别在于添加到选择器:visible
。
再添加一个位,通过检查是否通过执行正常操作淡入,然后,如果没有,则淡入第一个(或最后一个)来使其在最后滚动。
$("#arrow-next").click(function () {
$('ul.services li:visible').fadeOut(function () {
$(this).next().fadeIn('slow');
if ($('ul.services li:visible').length == 0) {
$('ul.services li:first').fadeIn('slow');
}
});
});
$("#arrow-back").click(function () {
$('ul.services li:visible').fadeOut(function () {
$(this).prev().fadeIn('slow');
if ($('ul.services li:visible').length == 0) {
$('ul.services li:last').fadeIn('slow');
}
});
});
小提琴
以下是我将如何做到的:
.HTML:
<div><span class="leftArrow">< </span><span class="rightArrow"> ></span></div>
<div class="slideContainer">
<div class="slide1 slide">slide 1</div>
<div class="slide2 slide">slide 2</div>
<div class="slide3 slide">slide 3</div>
<div class="slide4 slide">slide 4</div>
</div>
JavaScript:
$('.slide').hide();
$('.slide1').show().addClass('active');
var eq=0;
$('.leftArrow').on('click',function(){
$('.active').hide("slide", { direction: "right" }, 500);
if(eq==0){
$('.slide').removeClass('active');
eq=3;
$('.slide:eq('+eq+')').addClass('active');
}
else{
eq=eq-1;
$('.slide').removeClass('active');
$('.slide:eq('+eq+')').addClass('active');
}
$('.active').show('slide',{direction:"left"},500);
});
$('.rightArrow').on('click',function(){
$('.active').hide("slide", { direction: "left" }, 500);
if(eq==3){
$('.slide').removeClass('active');
eq=0;
$('.slide:eq('+eq+')').addClass('active');
}
else{
eq=eq+1;
$('.slide').removeClass('active');
$('.slide:eq('+eq+')').addClass('active');
}
$('.active').show('slide',{direction:"right"},500);
});
您可以在此处查看工作示例:http://jsfiddle.net/PHrct/
相关文章:
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 将多个onclick压缩为一个
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 全局屏幕span onclick触发一个事件javascript
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- 指定一个具有静态值的onclick函数
- window.onclick在一个网站中使用两次
- 如何在HTML按钮中有一个静态onclick参数
- 如何在一个onclick按钮上使用一个javascript函数选择多个文本字段
- 如何通过一个onclick事件更改两个单独的图像
- 如何使用onclick事件点击一个图像,并让它更改同一网页上的另一个图像
- 将onclick事件附加到具有一个元素的下拉列表中
- html链接onclick弹出一个表单
- jQuery onclick 函数:未定义不是一个函数
- 一个按钮中的两个onClick功能,并希望一个接一个地发生一个单击功能
- 按钮onclick应该与参数一起重定向到另一个xhtml页面
- onclick适用于一个按钮,但不适用于'不要为别人工作
- 如何创建一个onclick函数,该函数在按下重新启动按钮时被调用
- “onclick"一个按钮在一个弹出只工作一次