Jquery选择next和prev img

时间:2014-05-16 12:53:56

标签: jquery

我在一个小jquery函数上工作,但我有点卡住了。我想要做的是当我点击next和prev链接向我展示基于img的下一个和之前的img with class =“clicked”。我知道我可以使用find()函数,但我真的不知道如何实现它。

HTML

                
            <div class="thumbs_img">
                <a href="#p" class="prev">Prev</a>
                <img src="images/single_slider1.png" class="gallerythumbnail">
                <img src="images/single_slider2.png" class="gallerythumbnail">
                <img src="images/single_slider3.png" class="gallerythumbnail">
                <img src="images/single_slider4.png" class="gallerythumbnail clicked">
                <img src="images/single_slider5.png" class="gallerythumbnail"> 
                <img src="images/single_slider6.png" class="gallerythumbnail"> 
                <img src="images/single_slider7.png" class="gallerythumbnail">
                <a href="#n" class="next">Next</a>
            </div>

的js

$(document).ready(function() {        
    $('.gallerythumbnail').click(function(){
        $('#homeprod').removeClass('clicked');
        $('.gallerythumbnail').removeClass('clicked');
        $(this).toggleClass('clicked');
    });

    $('.showimagediv').show();
    $('.gallerythumbnail').on('click', function() {
        var img = $('<img />', {src    : this.src,
                                'class': 'fullImage'
                  });

        $('.showimagediv').html(img).show();
    });
});

的CSS

.showimagediv {
    display: none;
    width: 100%;
    height: 474px;
    background-color: #000;
}
.gallerythumbnail{
    margin-left: 5px;
    margin-right: 5px;
    width:80px; 
    height: 80px;
    cursor:pointer;
}
.slider_prod{
    border: 2px solid #000;   
}
.thumbs_img{
    margin-top: 10px;
}
.clicked {outline: 2px solid #fdb900;}
.fullImage{
    width: 750px;
    height: 474px;
}
.prev{
    background-image: url('images/arrow_left.png');
    background-position: center center;
    background-repeat: no-repeat;
    padding-left: 20px;
    padding-right: 25px;
    padding-top: 30px;
    padding-bottom: 35px;
    margin-right: 3px;
}
.next{
    background-image: url('images/arrow_right.png');
    background-position: center center;
    background-repeat: no-repeat;
    padding-left: 25px;
    padding-right: 20px;
    padding-top: 30px;
    padding-bottom: 35px;
    margin-left: 3px;
}

http://jsfiddle.net/7mUmK/

3 个答案:

答案 0 :(得分:3)

你可以分别触发next / prev点击按钮上的.clicked元素的下一个/上一个图像元素。点击这个:

 $('.next').click(function(){
  if($('.clicked').next().is(':last'))
    $('.clicked').next().click();
 });
 $('.prev').click(function(){
  if($('.clicked').prev().is(':first'))
    $('.clicked').prev().click();
 });

<强> Working Demo

答案 1 :(得分:3)

当您在第一张图片上点击并且点击&#34;上一页&#34;或者在最后一张图片上点击&#34;下一步&#34;

$('.next').click(function(){
    if(!$(".clicked").is(".gallerythumbnail:last"))
    {
        $('.clicked').next().click();
    }
});
    $('.prev').click(function(){
    if(!$(".clicked").is(".gallerythumbnail:first"))
    {
        $('.clicked').prev().click();
    }
});

DEMO

如果偶然你希望它在最终案例中循环

$('.next').click(function(){
    if(!$(".clicked").is(".gallerythumbnail:last"))
    {
        $('.clicked').next().click();
    }
    else
    {
        $(".gallerythumbnail:first").click();
    }
});
    $('.prev').click(function(){
    if(!$(".clicked").is(".gallerythumbnail:first"))
    {
        $('.clicked').prev().click();
    }
    else
    {
        $(".gallerythumbnail:last").click();
    }
});

答案 2 :(得分:0)

这里有一个小提琴http://jsfiddle.net/keypaul/7mUmK/28/

$(".thumbs_img  a").click(function(e){
    var c = $(this).attr('class');
    skipImg(c);
    e.preventDefault();
});


function skipImg(c){
    var sel = $('img.clicked'),
        l = $('.thumbs_img img').length,
        n;
    if( c == "next"){
        n = $('.clicked').next();
        if(n.index() > l){
           n = $('.thumbs_img img').eq(0);
        }
    }else{
        n = $('.clicked').prev();
        if(n.index() <= 0){
            n = $('.thumbs_img img').eq(l - 1);
        }
    }
    n.addClass('clicked');
    sel.removeClass('clicked');
   //here call a function to change big img
}