创建了一个轮播,但如果有多个,则会出错。 (包括小提琴)

发布于 2024-12-09 21:54:01 字数 1495 浏览 0 评论 0 原文

这是小提琴 http://jsfiddle.net/rgbjoy/q9VGh/

我想在上面有多个轮播一页,但不想影响全部。我该怎么办?

HTML:

<div class="project">
    <div class="prev">&nbsp;</div>
    <div class="next">&nbsp;</div>
    <ul class="detail">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
</div>

和 jQuery:

// Slider
$('.detail li:first').before($('.detail li:last'));

$('.next').click(function() {
    var itemWidth = $('.detail li').outerWidth() + 10;
    var leftIndent = parseInt($(".detail").css("left"), 10) - itemWidth;
    $('.detail').animate({
        'left': leftIndent
    }, 400, function() {
        $('.detail li:last').after($('.detail li:first'));
        $('.detail').css({
            'left': '-200px'
        });
    });
});

$('.prev').click(function() {
    var itemWidth = $('.detail li').outerWidth() + 10;
    var leftIndent = parseInt($('.detail').css('left'), 10) + itemWidth;
    $('.detail').animate({
        'left': leftIndent
    }, 400, function() {
        $('.detail li:first').before($('.detail li:last'));
        $('.detail').css({
            'left': '-200px'
        });
    });
});

-- 额外 --

我该如何让所有 li 项目变暗,而最左边的项目则不变暗?

非常感谢您的帮助。

Here's the fiddle http://jsfiddle.net/rgbjoy/q9VGh/

I want to have multiple carousels on one page, but don't want to effect them all. How do I go about this?

HTML:

<div class="project">
    <div class="prev"> </div>
    <div class="next"> </div>
    <ul class="detail">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
</div>

And jQuery:

// Slider
$('.detail li:first').before($('.detail li:last'));

$('.next').click(function() {
    var itemWidth = $('.detail li').outerWidth() + 10;
    var leftIndent = parseInt($(".detail").css("left"), 10) - itemWidth;
    $('.detail').animate({
        'left': leftIndent
    }, 400, function() {
        $('.detail li:last').after($('.detail li:first'));
        $('.detail').css({
            'left': '-200px'
        });
    });
});

$('.prev').click(function() {
    var itemWidth = $('.detail li').outerWidth() + 10;
    var leftIndent = parseInt($('.detail').css('left'), 10) + itemWidth;
    $('.detail').animate({
        'left': leftIndent
    }, 400, function() {
        $('.detail li:first').before($('.detail li:last'));
        $('.detail').css({
            'left': '-200px'
        });
    });
});

-- Extra --

How do I go about having all of the li items dimmed out and the one furthest to the left not?

Thanks so much for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦境 2024-12-16 21:54:01

您正在做这样的事情:

var itemWidth = $('.detail li').outerWidth() + 10;

$('.detail li') 将查找具有 detail< 类的元素中的所有

  • 元素/代码>。您需要做的就是将搜索限制在适当的 .project 的子级中,并且您可以通过使用 .project 来完成此操作="http://api.jquery.com/closest/" rel="nofollow">closest 并使用 find
  • var itemWidth = $(this).closest('.project').find('.detail li').outerWidth() + 10;
    

    同样,$(".detail") 变为 $(this).closest('.project' ).find('.detail') 等等。

    You're doing things like this:

    var itemWidth = $('.detail li').outerWidth() + 10;
    

    The $('.detail li') will find all <li> elements within elements with a class of detail. All you need to do is restrict your search to the children of the appropriate .project and you can do that by going up the DOM to find your .project using closest and coming back down using find:

    var itemWidth = $(this).closest('.project').find('.detail li').outerWidth() + 10;
    

    Similarly, $(".detail") becomes $(this).closest('.project').find('.detail') and so on.

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文