Open maxpoletaev opened 7 years ago
Существует какое-то альтернативное решение в 2021 году? Не обязательно с привязкой к jQuery.
У яндекса вроде еще жива движуха в этом направлении, в частности bem-react
Как я понимаю, движуха была и на момент написания данного плагина для jQ)) Но я имел ввиду не официальное решение. Упрощенное. Просто для работы с js от BEM (точнее от яндекс) нужно делать какие-то сборки, еще фигову тучу каких-то действий (только что с ними в чате общался). А всё, что мне нужно - просто легко обращаться к блоку и его элементам. Т.е. условно вместо
$('.block').find('.block__element')
Писать
block('block').elem('element')
Конечно можно использовать jQ до 3-й версии, но вдруг что-то еще уже существует :)
In jQuery 3.0 was removed the selector property. It was the only way to determine the block if the node has few block-level classes. See example:
$('.block-b').elem('elem')
should returns.block-b__elem
but returns.block-a__elem
. The context is unknown, and the block will be determined by the first class on the node.This change made the plugin fully useless. And now I should mark it as deprecated. Sorry.
Context always creates issues and problems. The best solution to these problems is to rethink and remake the plugin. Some kind of separate abstraction that allows to store the context correctly. Without jQuery.
В jQuery 3.0 было убрано свойство selector. Это был единственный способ понять, какой блок был выбран, если на dom ноде присутствуют несколько классов-блоков. Посмотрите наглядно:
$('.block-b').elem('elem')
должен вернуть.block-b__elem
но вернет.block-a__elem
так как контекст теперь неизвестен и блок определится по первому классу на ноде.Это изменение сделало плагин бесполезным. И я должен отметить его как устаревший и не рекомендуемый к использованию. Извините.
С контекстом всегда было связано несколько багов. И лучшем решением будет все переосмыслить и переделать. Сделать отдельную абстакцию над DOM, которая позволит правильно хранить контекст, без привязки к jQuery.