【问题标题】:jQuery.cycle pager dividerjQuery.cycle 寻呼机分隔符
【发布时间】:2012-05-05 11:03:00
【问题描述】:

这是我在这里的第一篇文章,希望我不会犯很多错误......

我在我的网站上使用了出色的 jquery.cycle 插件作为新闻滑块模块。现在我想添加一个如下所示的寻呼机:

01 / 02 / 03 / 04

这意味着我必须在除最后一个之外的每个寻呼机号码之后添加“分隔符”(=“/”一个正斜杠)。但我不知道我怎么可能做到这一点。

这就是我所拥有的:

// redefine Cycle's updateActivePagerLink function 
$.fn.cycle.updateActivePagerLink = function(pager, currSlideIndex) {
    $(pager)
        .find('a')
        .removeClass('active') 
        .filter('a:eq('+currSlideIndex+')')
        .addClass('active'); 
};



$('div.teaser-news')
    .after('<div class="pager-news"></div>')
    .cycle({ 
        fx:     'scrollRight',
        rev:        1,
        speed:  'slow', 
        timeout: 6000,
        pager:'.pager-news', 
        pagerAnchorBuilder: function(idx, slide) {

            var numSlides = $("div.teaser-news").length;

            if( idx < 10){
                idx += '<a href="#">0' + idx + '</a><span class="divider">&nbsp;&#47;&nbsp;</span>';
            } else {
                idx += '<a href="#">' + idx + '</a><span class="divider">&nbsp;&#47;&nbsp;</span>';
            }

            return idx; 
        }
});

谁能帮我去掉最后一个斜线? 谢谢!

【问题讨论】:

  • 如果对您有帮助,请单击绿色箭头标记以下答案之一。

标签: jquery cycle pager


【解决方案1】:

lucuma 添加的零填充功能对我来说很方便,尽管经过一些实验后,我发现输出不喜欢在包装器之外添加。因此,当我尝试执行 return &lt;a href='#'&gt;" + zeroPad(n,2) + "&lt;/a&gt;&amp;nbsp;/&amp;nbsp; 时,它在关闭 &lt;/a&gt; 后忽略了标记

为了解决这个问题,我必须添加一个包装&lt;li&gt;,这样我就可以在包装内添加正斜杠。我已经修改了我的代码以匹配

$('.carousel .images').cycle({
   timeout: 5000,
   pager : '.pager-news',
   pagerAnchorBuilder: function(idx, slide) {
     var n = idx+1;
     var wrapper = $("div.teaser-news");
     if(n != wrapper.children().length){
       return "<li><a href='#'>" + zeroPad(n,2) + "</a>&nbsp;/&nbsp;</li>";  
     }else{
       return "<li><a href='#'>" + zeroPad(n,2) + "</a></li>"; 
     }
   }
 });

【讨论】:

    【解决方案2】:
    if( idx < 10){
       idx += '<a href="#">0' + idx + '</a>';
       if (idx+1 != numSlides) {
          idx += '<span class="divider">&nbsp;&#47;&nbsp;</span>';
       }
    } else {
       idx += '<a href="#">' + idx + '</a>';
       if (idx+1 != numSlides) {
          idx += '<span class="divider">&nbsp;&#47;&nbsp;</span>';
       }
    }
    

    恕我直言

    【讨论】:

      【解决方案3】:

      我更喜欢只使用 pad 功能:

      function zeroPad(num, places) {
        var zero = places - num.toString().length + 1;
        return Array(+(zero > 0 && zero)).join("0") + num;
      }
      

      然后您可以删除 if/then 并执行以下操作:

      var slash = "/";
      if (idx=(numSlides-1))
          slash = "";
      
      return zeroPad(idx+slash, 2); 
      

      还有几个例子How to output integers with leading zeros in JavaScript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-04
        • 2011-03-31
        • 1970-01-01
        • 2013-12-23
        • 2022-11-18
        • 1970-01-01
        • 2011-06-07
        • 2011-07-23
        相关资源
        最近更新 更多