-4

这是我的代码/示例:http: //jsfiddle.net/6j4cT/14/

滑块工作得很好,我现在想要的是,如果你点击任何“新闻项目”,比如“节点 1”,相应的图像将呈现 - 与“节点 2”相同

// News Article Slideshow
  var periodToChangeSlide = 5000;
  var pp_slideshow = undefined;
  var currentPage = 0;

  $('#news-feature-img-wrap li').css('display','list-item').slice(1).css('display','none');
  $('#news-items li:first').addClass('active');

  $("#news-feature-wrap #news-items li").click( function() {
  $(this).parent().addClass('active');
  $(this).parent().siblings().removeClass('active');

  var index = $(this).parent().index();
  var toShow = $("#news-feature-wrap #news-feature-img-wrap li").eq(index);
  toShow.show();
  toShow.siblings().hide();
  currentPage = index;
  $.stopSlideshow();
  });

  $.startSlideshow = function(){
    if(typeof pp_slideshow == 'undefined'){
    pp_slideshow = setInterval($.startSlideshow, periodToChangeSlide);
  } else {
    $.changePage();
    }
  }

  $.stopSlideshow = function(){
    clearInterval(pp_slideshow);
    pp_slideshow= undefined;
  }
  $.changePage = function(){
    var numSlides= $('#news-feature-wrap #news-feature-img-wrap li').length;
    currentPage = (currentPage + 1) % numSlides;
    var menu = $('#news-feature-wrap #news-items li').eq(currentPage);
    menu.addClass('active');
    menu.siblings().removeClass('active');

    var toShow = $("#news-feature-wrap #news-feature-img-wrap li").eq(currentPage);
    toShow.show();
    toShow.siblings().hide();
  }

  $.startSlideshow();
4

1 回答 1

2

$.changePage稍微修改了您的函数以接受内部参数:

$.changePage = function(internal) { //add this optional parameter
  var numSlides= $('#news-feature-wrap #news-feature-img-wrap li').length;
  if (typeof internal == 'undefined') currentPage = (currentPage + 1) % numSlides; //add this conditional
  else currentPage = internal; //and this else
  ...

然后你可以添加一个简单的事件监听器:

$('#news-items').on('click', 'li', function() {
    //stop and restart to reset the interval
    $.stopSlideshow();
    $.changePage($(this).index());
    $.startSlideshow();
});

小提琴

对于 jQuery 1.4.3- 1.6.4

$('#news-items').delegate('li', 'click', function() {
    //stop and restart to reset the interval
    $.stopSlideshow();
    $.changePage($(this).index());
    $.startSlideshow();
});

小提琴

于 2012-07-31T02:30:19.140 回答