如何在不实际单击的情况下手动触发主干单击事件

时间:2014-11-05 17:10:43

标签: javascript backbone.js javascript-events

我有一个像这样设置的主干事件处理程序:

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

对于其中一个.filter-options-container元素,我想要触发" filterOptionContainerClick"没有实际点击的功能。问题是函数需要访问event.currentTarget - 所以我不能只调用函数 - 我必须模拟click事件。我该怎么做呢?这就是这个功能:

filterOptionContainerClick: function(e){

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

    },

1 个答案:

答案 0 :(得分: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>