是否可以在jQuery的trigger()中使用.preventDefault()

时间:2012-03-29 12:01:01

标签: javascript javascript-events jquery

我创建了一个名为slides.swap的自定义事件,但我希望阻止该事件来自click中的trigger()。它不起作用。我如何从trigger()那样做? 我知道我可以在click函数中阻止它,但我只想保持所有“封装”。

JS:

tabs.on('click', 'a', function(e){
  $(this).trigger('slides.swap', e);
});

//Custome event 
tabs.find('a').bind('slides.swap', function(e){
   var self = $(this),
       selfIndex = self.parent().index(),
       targetSlide = slides.eq(selfIndex);

   e.preventDefault(); //somehow this doesn't work

   //fade in/out slides
   slides.filter('.active').stop(true, false).fadeOut(speed, function(){
      $(this).removeClass('active'); 
   });
   targetSlide.stop(true, false).fadeIn(speed).addClass('active');
   tabs.removeClass('selected');
   self.parent().addClass('selected');
});

非常感谢

1 个答案:

答案 0 :(得分:2)

您正在preventDefault()事件的Event对象上调用swap,该事件与<{1}}事件不同。尝试在传递给click处理程序的事件对象上调用preventDefault();

slides.swap

必须说,这不是很棒的程序设计。 错误操纵另一个事件链/对象。