我有以下情况。我在MarionetteJS上使用Bootstrap标签。无论何时标签点击事件被触发,我只想在为此标签触发show.bs.tab事件后才调用我的处理程序。如果只有shown.bs.tab事件被触发,我不想触发我的处理程序,因为有些情况下我通过调用tab('show')方法以编程方式显示特定的选项卡。如何仅当事件按特定顺序发生时触发jquery事件处理程序?
以下事件序列点击后,所以基本上只调用句柄 - > shown.bs.tab
我得到了它的工作方式如下:
var clicked = false;
this.$el.on('click', 'a[data-toggle="tab"]', function(e) {
clicked = true;
});
this.$el.on('shown.bs.tab', 'a[data-toggle="tab"]', function(e) {
if (clicked === true) {
var moduleId = $(this).attr("data-module");
App.vent.trigger("resultTabClicked", {
module: moduleId
});
}
clicked = false;
});
这与优雅的解决方案相去甚远,是否有更好的方法来实现这一目标?也许有承诺?
我不知道MarionetteJS,但你为什么不能直接连接处理程序到'click'事件? – Iazel 2014-10-17 00:07:55