2013-06-05 4 views
0

В Backbone его довольно очевидно, как делать события click, но мне трудно получить фактический элемент, представляющий селектор, с которым было связано событие.получить элемент, на который связано событие просмотра в обратном вызове

Должен ли я проверить, есть ли у меня его или поместить вверх по DOM через $(ev.target).parent(), или есть более простой способ?

Markup пример:

<div data-action="handle"> 
    <div>This is the click event target.</div> 
</div> 

Backbone вид Пример:

Backbone.View.extend({ 
    events: { 
    'click [data-action="handle"]': 'handle' 
    }, 

    handle: function(ev) { 
    // ev.target doesnt match up with the actual selector above 
    // How do I get $element such that: 
    // $element.data('action') === 'handle' 
    } 
} 

ответ

2

Ну основа использует делегирование событий. Если вы будете пытаться получить

ev.target

это поможет вам элемент, где это событие действительно происходит, т.е. внутренний DIV.

Чтобы получить выше рабочего использования: -

ev.currentTarget

Это даст вам элемент, где вы на самом деле прикрепленную событие.

+0

спасибо, не знало о 'currentTarget' – AJcodez

0

Еще один признак того, что элемент, занимающий событие, доступен через this.

Это не будет в случае, если вы использовали bindAll на обратном вызов, хотя

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