我创建了一个名为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');
});
非常感谢
答案 0 :(得分:2)
您正在preventDefault()
事件的Event对象上调用swap
,该事件与<{1}}事件不同。尝试在传递给click
处理程序的事件对象上调用preventDefault()
;
slides.swap
必须说,这不是很棒的程序设计。 错误操纵另一个事件链/对象。