当给对象一个对象时,jQuery触发事件

时间:2010-11-10 18:37:03

标签: jquery events class triggers carousel

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

它使用分页,并在单击页码时将名为“active”的类应用于当前页码。我希望在应用此类时触发事件,因为它还使用左箭头和右箭头将类应用于当前页码。

以下是应用类时我想要触发的事件:

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

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

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

默认情况下,第一个页码具有应用的类,这就是页面加载时的原因。当课程应用于其他页码时,我需要这样做。

3 个答案:

答案 0 :(得分:2)

编辑:如果您只需按下按钮,而不是auto功能,则可以在.delegate()上放置.carousel }一旦它可用,就会监听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
});

答案 1 :(得分: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 );
});

答案 2 :(得分:0)

我要做的是:

1 - 禁用自动播放

2 - 创建一个setInterval,对旋转木马的分页进行触发('click')

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