jQuery. Генерация объектов. Нужен совет
Добрый день. Начал писать скрипт интерактивной навигации по карте в виде игры. Но в один момент решил, что я делаю что-то не так...
Вот думаю, может его лучше использовать как плагин для jQuery? Или для данной задачи в этом нет необходимости. Суть в том, что у меня есть база в формате json Она содержит объекты комнат, Каждая комната содержит объекты со своими координатами, на которые вешаются события. Я сделал просто скриптом с использованием jQuery. Но внутренне что-то подсказывает, что лучше его плагином сделать... Т.к. он даже в 150 строк становится не совсем очевидным в некоторых местах... В общем вопрос. Как "правильно" генерировать дочерние объекты к сгенерированному объекту и подвешивать на них события? Т.е. допустим я генерирую var $room = $('<div></div>'); а дочерние так? objects.each(function(){ var $obj = $('<div></div>'); $obj.addClass('obj'); $obj.on('çlick', function() { goToRoom(параметры для перехода в другую комнату); }); $room.append($obj); }); Или как лучше? в итоге что-то типа (в упращённой версии) (function($) { $.fn.myMap = function(options) { function goToRoom() { смена комнаты }; function createRoom(id) { var room = db.room[id]; var $room = $('<div></div>'); room.objects.each(function(){ var $obj = $('<div></div>'); $obj.addClass('obj'); $obj.on('çlick', function() { goToRoom(параметры для перехода в другую комнату); }); $room.append($obj); }; return this.each(createRoom(options.startRoom)); }; })(jQuery); будет ли такой вариант "правильным"? |
Цитата:
Я вот для себя не вижу смысла писать на чистом js свои функции-обертки - быстрее использовать эту библиотеку с обилием уже написанных методов. Создавать dom можно и так и так - $('<div>') или $('div',{id:'myid',class:'myclass'}) Второй вариант написания кода мне кажется более изящным, хотя в $.fn - смысла мне вижу, как и в предыдущем objects.each - первым вы создаете новый метод jQuery, который по логике должен применяться к какому то объекту, но код в нем написанный никаких действий с этим объектом не производит. Так же и во втором - вы применяете метод each() к objects , при этом совершенно этот самый objects не затрагивается. Может я ошибаюсь - если в goToRoom осуществляются какие то действия с objects? |
Часовой пояс GMT +3, время: 16:18. |