【问题标题】:Image count (1/10) in a slider滑块中的图像计数 (1/10)
【发布时间】:2012-10-16 08:56:07
【问题描述】:

这是一张具有自动淡入的图像幻灯片,我也可以通过左下角的箭头(下一个和上一个箭头)来控制它。问题是我想显示所有图像和我们正在观看的图像的当前编号(如箭头之间的编号),我已经做了标记,但我已经搜索了很多关于如何编程数字但不能找不到类似的东西。有人可以帮帮我吗?

这是标记:

<div id="slideshow">
    <ul id="slides">
        <li><img src="img/project_image.jpg" /></li>
        <li><img src="img/project_image2.jpg"/></li>
        <li><img src="img/project_image3.jpg" /></li>
        <li><img src="img/project_image4.jpg" /></li>
    </ul>
</div>

<div class="project_navigation" class="clearfix">
    <ul id="nav">
        <li id="prev"><a href="#">Previous</a></li>
        <div class="project_number">
            <p>10/12</p>
        </div>
        <li id="next"><a href="#">Next</a></li>
    </ul>
</div>

这就是我对滑块的称呼:

  $("#slideshow").css("overflow", "hidden");

  $("ul#slides").cycle({
      fx: 'fade',
      pause: 1,
      prev: '#prev',
      next: '#next'
  });

我正在使用这个插件: http://jquery.malsup.com/cycle/

【问题讨论】:

    标签: javascript jquery css ajax slider


    【解决方案1】:
    $(function() {
        $('#slideshow').cycle({
            fx:       'fade',
            timeout:   0,
            prev: '#prev',
            next: '#next',
            after:     onAfter
        });
    });
    
    function onAfter(curr,next,opts) {
        var caption = 'Image ' + (opts.currSlide + 1) + ' of ' + opts.slideCount;
        $('#caption').html(caption);
    }
    

    您可以使用after 回调(或before)通过函数更改div 的内容。此函数将在每次转换之后(或之前)运行。

    http://jsfiddle.net/spacebeers/VhcgL/

    【讨论】:

    • 您需要将#caption 更改为 .project_number p 并为下一个和上一个同步 ID,但它会起作用。
    • 代码有效 (jsfiddle.net/spacebeers/VhcgL)。您需要添加这两个部分。
    • 查看 onAfter 函数是如何运行的第一件事,因此您不需要标题 div 中的任何文本即可开始。我也用 timeout: 0 而不是 pause 暂停了幻灯片。
    【解决方案2】:

    查看本插件的onPrevNextEvent回调函数。

    $("ul#slides").cycle({
          fx: 'fade',
          pause: 1,
          prev: '#prev',
          next: '#next',
          onPrevNextEvent : function(isNext, zeroBasedSlideIndex, slideElement){
               $('.project_number p').text(zeroBasedSlideIndex+'/'+$("ul#slides img").length);
          }
      });
    

    不测试此代码,但可能在循环完成之前触发 onPrevNextEvent。在这种情况下,您应该查看 isNext 参数或 onAfter 事件。

    【讨论】:

    • 这个有效,但是我先点击箭头后显示编号,在页面加载时它没有显示任何内容,这是为什么呢?
    • 我在 webtest 上更新了它,这样你就可以看到发生了什么
    • 因为它正在寻找下一个/上一个事件,该事件在单击导航之前尚未触发。请参阅我的答案以获取可以做到这一点的答案。
    • 是的,你应该使用 onAfter 事件查看 SpaceBeers 的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多