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, время: 22:55. |