Такой вопрос когда я вещаю обработчик на элемент блока
this.bindTo(this.elem('btn'), 'click', function(e){
this.delMod(this.elem('btn'), 'selected');
this.itemOnclick(e);
});
Как получить объект элемента в рамках БЭМа? У меня пока только один вариант получения самой ноды через e.target, но это не то что нужно.
Что значит объект элемента?
this.elem('btn')
возвращает jQuery коллекцию@AndreyGladkov в bem-core v2 (или i-bem из 2.x) пока нет объектов элемента, равно как и коллекций, если только не использовать специальный
elem-instances
, который надо явно подключать.Если
this.elem('btn').filter(e.target)
не подходит, тогда я не понял задачи, сорьки ;-)До хотелось по событию получать объект - как блока. что бы по методологии вешать модификаторы а не добавлять классы к e.target к самой ноде(потому как да this.elem('btn') вернет коллекцию).
Так и не надо классы самостоятельно вешать. Передавайте в this.setMod блока первый параметр jQuery коллекцию с этой нодой.
А чем не устраивает твоей же пример? (я его немного подсократил)
А вообще из опыта, такой вопрос — не первый раз вижу всякие 'btn' элементы у тебя. Почему не используешь из
bem-components
блокbutton
для реализации кнопок?Если нужно внутри блока работать с кнопкой можно сделать так. bemjson
js
Код не проверял, думаю сообщество меня поправит.
И кажется нужно тебе подробнее проблему описать.
:+1:
Мой пример удаляет у всей коллекции элементов модификатор, а событие происходит не на коллекции а на конкретном элементе так вот и хочется ему ставить нужный модификатор православным методом. Я понял предложение одно юзать блоки) По поводу первого элемента коллекции не подходит в коллекции их много, а событие может быть на любом из коллекции. Не использую в проекте bem-components(в проекте все специфично) Ну а вообще это табы (tabs) внутри которых есть tabsbtn. Сам по себе tabsbtn не существует в моем мире))
но ничто не мешает ему быть реализованным с помощью уже существующего блока
button
Кажется вы ищете
this.findElem(e.target, 'btn');
Он ждет не саму ноду, а jquery коллекцию ( e.target || e.srcElement - вернет ноду по которой было событие)
По поводу существующего блока вы правы, надо поменять свою парадигму на бэм изнутри) и юзать блоки в таких случаях.