2014-11-05 1 views
1

У меня есть обработчики событий магистральной набор вверх, как это:Как вручную вызвать событие магистрального клика без фактического нажатия

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

Для одного из этих .filter-параметры-контейнер элементов, есть сценарий, в котором Я хочу запустить функцию filterOptionContainerClick без фактического нажатия. Проблема в том, что функция нуждается в доступе к event.currentTarget - поэтому я не могу просто вызвать функцию - мне нужно моделировать это событие click. Как мне это сделать? Вот эта функция:

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>)

Смежные вопросы