【问题标题】:How to manually trigger a backbone click event without actually clicking如何在不实际点击的情况下手动触发主干点击事件
【发布时间】:2014-11-05 17:10:42
【问题描述】:

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

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

对于这些 .filter-options-container 元素之一,有一种情况是我想在不实际单击的情况下触发 filterOptionContainerClick 函数。问题是函数需要访问event.currentTarget - 所以我不能只调用函数 - 我必须模拟那个点击事件。我该怎么做呢?这是那个函数:

filterOptionContainerClick: function(e){

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

    },

【问题讨论】:

    标签: javascript backbone.js backbone-events


    【解决方案1】:

    为什么不只检查 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>

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      相关资源
      最近更新 更多