2016-08-17 2 views
0

У меня есть вид <select>, который имеет метод, который я хочу вызывать всякий раз, когда на нем происходит событие click или <option>.Делегированное событие клика, не срабатывающее на потомках

мнение выглядит следующим образом:

mySelect = Backbone.view.extend({ 
    el: '.my-select', 
    events: { 
     'click': 'isSelected' 
    }, 
    isSelected: function(e) { 
     console.log(e.currentTarget.tagName); 
    } 
}); 

В настоящее время isSelected() срабатывает только при нажатии на самом select и не options.

Я пробовал 'click option', 'click *' и 'click .my-select > option'.

Что мне не хватает?

+0

Какой браузер вы тестирование на? https://www.fxsitecompat.com/en-CA/docs/2016/events-on-option-no-longer-bubble-up-to-select-in-multi-process-firefox/. Кроме того, есть ли причина, по которой вам нужно слушать 'click', а не' change'? –

+0

@ EricGuan, это в Chrome. В настоящее время я слушаю «change», и я скрываю выбор. Однако при нажатии одной и той же опции «change» не запускается, и выбор все еще отображается: \ – Rhono

ответ

0

То, что я пытаюсь сделать, невозможно, и причина полностью не связана с Backbone! Проблема в том, что в большинстве браузеров события мыши/клавиатуры не срабатывают на options.

От MDN:

Исторически Firefox позволило события клавиатуры и мыши к пузыриться от элемента к родительскому элементу. Однако этого не происходит в Chrome, хотя это поведение непоследовательно во многих браузерах.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option

так ответ, который привел меня к MDN: onclick on option tag not working on IE and chrome

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