简体   繁体   English

jQuery内容箭头导航

[英]JQuery Content Arrow Navigation

I've been in trouble with this code: http://jsfiddle.net/xarlyblack/4wsx3zkx/ 我在使用此代码时遇到了麻烦: http : //jsfiddle.net/xarlyblack/4wsx3zkx/

I want to do a jQuery fadeIn/Out content navigation. 我想做一个jQuery fadeIn / Out内容导航。

It works when I go to the next div and then back again. 当我转到下一个div然后再次返回时,它可以工作。 But when I'm in the last div and I click next, the content disappears (why had created an if statement to return to the first). 但是,当我进入最后一个div并单击下一步时,内容消失了(为什么创建了if语句以返回到第一个)。 It happens the same when I'm in the first div and click to previous, is that I want to go to the last div. 当我进入第一个div并单击上一个时,会发生相同的情况,就是我想转到最后一个div。

I tried with .last() / .first() .find()eq() . 我试图与.last() / .first() .find()eq() But anything goes. 但是一切都会发生。 I think I'm missing something. 我想我缺少了一些东西。

jQuery code: jQuery代码:

 var ilust = $('.ilust'); var wrapper = ilust.find('.pag-ilust'); var pag = wrapper.find('.pag'); var btn = ilust.find('.nav-btn'); btn.click(function(){ if ($(this).hasClass('nav-next')){ var currentPag = $('.active-pag'); var nextPag = currentPag.next(); currentPag.fadeOut('fast').removeClass('active-pag'); nextPag.fadeIn('slow').addClass('active-pag'); if (nextPag = false){ nextPag = pag.first(); } } else if ($(this).hasClass('nav-prev')){ currentPag = $('.active-pag'); prevPag = currentPag.prev(); currentPag.fadeOut('fast').removeClass('active-pag'); prevPag.fadeIn('slow').addClass('active-pag'); } }); 

You need to see whether the next/prev returned any element using its length, also you need to do it as soon as you try to fetch the next/prev element and if they are not present then need to assign the default value. 您需要查看next / prev是否使用其长度返回了任何元素,还需要在尝试获取next / prev元素时立即进行操作,如果不存在它们,则需要分配默认值。

 var ilust = $('.ilust'); var wrapper = ilust.find('.pag-ilust'); var pag = wrapper.find('.pag'); var btn = ilust.find('.nav-btn'); btn.click(function() { if ($(this).hasClass('nav-next')) { var currentPag = $('.active-pag'); var nextPag = currentPag.next(); if (!nextPag.length) { nextPag = pag.first(); } currentPag.stop().fadeOut('fast').removeClass('active-pag'); nextPag.fadeIn('slow').addClass('active-pag'); } else if ($(this).hasClass('nav-prev')) { var currentPag = $('.active-pag'); var prevPag = currentPag.prev(); if (!prevPag.length) { prevPag = pag.last(); } currentPag.stop().fadeOut('fast').removeClass('active-pag'); prevPag.fadeIn('slow').addClass('active-pag'); } }); 
 .pag:nth-child(n+2) { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="ilust"> <div class="nav-cat"> <a href="#" class="nav-btn nav-prev">Prev</a> <a href="#" class="nav-btn nav-next">Next</a> </div> <div class="pag-ilust"> <div class="pag active-pag"> <p>Things 0</p> <p>Lot Things</p> </div> <div class="pag"> <p>Things 1</p> <p>Lot Things</p> </div> <div class="pag"> <p>Things 2</p> <p>Lot Things</p> </div> <div class="pag"> <p>Things 3</p> <p>Lot Things</p> </div> </div> 

More simplified version 更简化的版本

$('.nav-btn').on('click',function(){
    var next=$('.active-pag').next(); //get active page's next element
    var prev=$('.active-pag').prev(); //get active page's prev element
    $('.active-pag').fadeOut('fast').removeClass('active-pag'); //fadeOut active div
    if($(this).hasClass('nav-prev')){ //check whether clicked button is prev or next
        if(prev.length!=0) //check if previous element is present
        {
            prev.fadeIn('slow').addClass('active-pag'); //if yes fade that in
        }
        else
            $('.pag:last').fadeIn('slow').addClass('active-pag'); //fade last element in
    }
    else
    {
        if(next.length!=0) //checking for next element
        {
            next.fadeIn('slow').addClass('active-pag'); //if present fadeIn next element
        }
        else
            $('.pag:first').fadeIn('slow').addClass('active-pag');//if not fade in first element
    }
});

DEMO DEMO

Replace this: var nextPag = currentPag.next(); 替换为: var nextPag = currentPag.next();

By this: 这样:

var nextPag;
if(currentPag.next().length>0){
      nextPag = currentPag.next();
}else{
      nextPag = $(".pag").first();
}

And this: var prevPag = currentPag.prev(); 这是: var prevPag = currentPag.prev();

By this: 这样:

var prevPag;
if(currentPag.prev().length>0){
       prevPag = currentPag.prev();
}else{
       prevPag = $(".pag").last();
}

Here is your updated JSFiddle demo 这是您更新的JSFiddle演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM