我有以下情況。我在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