2014-11-05 86 views
1

我有了主心骨事件處理程序設置是這樣的:如何手動觸發骨幹click事件,而無需實際點擊

events : { 
      "click .filter-options-container" : "filterOptionContainerClick", 
    }, 

對於這些.filter選項容器元素之一,有一個場景:我想在不實際點擊的情況下觸發「filterOptionContainerClick」函數。問題是該函數需要訪問event.currentTarget - 所以我不能只調用函數 - 我必須模擬該點擊事件。我該怎麼做呢?以下是該功能:

filterOptionContainerClick: function(e){ 

     if (this.filtersEnabled){ 
     $(e.currentTarget).addClass('active'); 
     } else { 
     return; 
     } 

    }, 

回答

2

爲什麼不只是檢查e是事件還是元素。那麼你可以使用它,但是你想要的。

events: { 
    'click .filter-options-container': 'filerOptionContainerClick', 
}, 
//.... 
filterOptionContainerClick: function(obj) { 
    if(!this.filtersEnabled || !obj) { 
     return; 
    } 

    if(obj.currentTarget) { 
     $(obj.currentTarget).addClass('active'); 
    } else if($(obj) && $(obj).hasClass('filter-options-container')) { 
     $(obj).addClass('active'); 
    } 
} 

換句話說,你可以直接調用filterOptionContainerClick。喜歡的東西:

//..... 
    this.filterOptionContainerClick($('.filter-options-container')); 
//.... 

如果你需要給每個包含一個唯一的標識符,您可以用元素的屬性id做到這一點,或者只是使用自定義data-whatever屬性(即<div class="filter-options-container" data-identifier='some unique id'>...</div>