Я создал плагин jQuery, который позволяет пользователю взаимодействовать с деревом (создание, обновление, удаление узлов). Существует как минимум десяток способов взаимодействия с деревом. В идеале я не хочу загрязнять пространство имен jQuery всеми этими древовидными методами, как я делаю сейчас, поскольку каждый из этих методов предоставляет дополнительную возможность для столкновения пространства имен. Я просто хочу один метод для активации самого плагина, и поэтому я ищу рефакторинг.
$('ol#tree').tree(options) // just a single jQuery method for my plugin is fine…
$('li#item4').moveNode('li#item6') // …however, we also have this supporting method
$('ol#tree').appendNode(node) // …and this one
$('li#item2').expandBranch() // …and this one, etc.
Каковы некоторые способы предоставления интерфейса активированному элементу DOM и его подэлементам, которые не загрязняют пространство имен jQuery?
Я играл с сохранением объекта jQuery, который возвращается при создании дерева.
var tree = $('ol#tree').tree();
Этот объект дерева сам по себе будет расширен для включения методов. К сожалению, поскольку само дерево регулярно обрабатывается, возникает риск того, что состояние этого объекта не будет синхронизировано с состоянием родительского элемента DOM и его подэлементов. Я не уверен, что пытаться поддерживать состояние в этом объекте стоит, так как сам DOM всегда будет иметь текущее состояние.
Я также рассмотрел вопрос об использовании пространства имен (через плагин Space Джона Резига ):
$('ol#tree').tree()
$('ol#tree').tree.appendNode(node)
$('ol#tree').tree.item('li#item2').expandBranch()
Как вы справляетесь с этой проблемой? Не могли бы вы указать мне некоторые существующие плагины, которые решают эту проблему, из чьего кода я мог бы узнать?