Описание
По замыслу, большая часть кода jquery приводит к сильной связи, например селекторы предполагают определенную структуру html
var mySubnav = $("#navigation a.sub-menu");
. Если соответствующий html изменяется по каким-либо причинам, функциональность
нарушается.
Вопрос
- Как лучше всего справиться с жесткой связью?
- Какие существуют подходы, чтобы ослабить его?
Ответы, подходы
- используют атрибут пользовательских данных html для отделения логики CSS от логики js. например добавьте
data-submenu = "true"
в html и используйте var mySubnav = $ ("[data-submenu]");
на стороне js.
- реализуйте твердое тело среда тестирования
- как можно более свободна, используя наименее специфичные селекторы, например
$ ("a.sub-menu ')
. См. Также
- Исключите фактические строковые литералы, представляющие селекторы CSS, из тела вашего кода jQuery путем (1) получения ссылок на статический DOM элементы заранее, и (2) хранение строк селектора в одном месте (в верхней части кода).
- используйте фреймворки javascript, такие как Backbone , которые отделяют javascript от DOM через представления
- использовать делегат и live относительно связывания из-за управления событиями
задан Community 23 May 2017 в 11:53
поделиться