Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   jQuery. Генерация объектов. Нужен совет (https://javascript.ru/forum/library-toolkit-framework/43639-jquery-generaciya-obektov-nuzhen-sovet.html)

nextdrift 15.12.2013 12:06

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);


будет ли такой вариант "правильным"?

krasovsky 10.01.2014 09:33

Цитата:

Вот думаю, может его лучше использовать как плагин для jQuery? Или для данной задачи в этом нет необходимости.
jQuery - это просто обертка для javascript, если вы можете и главное хотите написать все на чистом js - ваше личное дело.
Я вот для себя не вижу смысла писать на чистом js свои функции-обертки - быстрее использовать эту библиотеку с обилием уже написанных методов.

Создавать dom можно и так и так - $('<div>') или $('div',{id:'myid',class:'myclass'})

Второй вариант написания кода мне кажется более изящным, хотя в $.fn - смысла мне вижу, как и в предыдущем objects.each - первым вы создаете новый метод jQuery, который по логике должен применяться к какому то объекту, но код в нем написанный никаких действий с этим объектом не производит.
Так же и во втором - вы применяете метод each() к objects , при этом совершенно этот самый objects не затрагивается.

Может я ошибаюсь - если в goToRoom осуществляются какие то действия с objects?


Часовой пояс GMT +3, время: 11:59.