2014-11-05 49 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>