0

我正在使用一个 jQuery 轮播,从这里下载:http ://www.thomaslanciaux.pro/jquery/jquery_carousel.htm

它使用分页,并在单击页码时将一个名为“活动”的类应用于当前页码。我想在应用此类时触发一个事件,因为它还使用左右箭头将类应用到当前页码。

这是我希望在应用类时触发的事件:

$('.red').click(function() {
     $('#formred').attr('checked', 'checked');
 });

我已经让它工作了,但只有在页面加载时:

 if ($('.red').hasClass('active')) {
      $('.red').trigger('click');
 }

默认情况下,第一个页码应用了该类,这就是页面加载时有效的原因。当课程应用于其他页码时,我需要发生这种情况。

4

3 回答 3

2

编辑:如果您只是在单击按钮时需要它,而不是因为它的auto功能,您可以.delegate().carousel它可用时放置 a 以侦听元素click上的事件。'a[role=button]'

$('.carousel').delegate('a[role=button]', 'click', function() {

     // Because a button in the carousel was clicked, we know that
     //   one of the elements received the .active class. So we just
     //   need to find it.
     var $activeButton = $(this).closest('.carousel').find('.active');

     // Not sure how the .red class from your question factors in, but you
     //   can test the $activeButton to see if it has that class
     if( $activeButton.hasClass('red') ) {
         $('#formred').attr('checked', 'checked');
     }
});

同样,这仅适用于按钮上的点击事件,而不是设置为auto旋转。不确定这是否是您所追求的。


如果需要,有一个插件livequery可以通过 jQuery 运行 DOM 修改代码。

http://brandonaaron.net/code/livequery/docs

$('.someClass').livequery( function() {
    // your code
});

如果您传递第二个函数参数,它将在删除类(或元素)时运行。

$('.someClass').livequery( function() {
    // your code when adding
}, function() {
    // your code when removing
});
于 2010-11-10T18:44:13.943 回答
0

我会做的是:

1-禁用自动播放

2-创建一个 setInterval,它在轮播的分页上触发('click')

3-当然在里面你可以做更多的事情,然后触发幻灯片

于 2011-11-04T22:11:46.580 回答
0

您不能创建一个共享事件处理程序,例如:

function changePage( pageNum, nextprev ){
  if( nextprev ) pageNum = activePage + nextprev;

  // show the next page

  $('someElement').addClass('active');
}

然后将此事件设置为 click 和 keydown:

$(...).keydown( function(){
  changePage( [1 or -1, depending on input], true );
});

$(...).click( function(){
  changePage( [clicked page], false );
});
于 2010-11-10T18:43:52.487 回答