2013-08-30 1 views
2

фонJQuery Draggable Получение отрицательного значения Позиции Когда Потянулось

Я строй метеоритного приложения, в котором я сохранить позиции и размеры объектов для соответствующих дел. Когда эта страница обращается снова, я воссоздаю все div и повторно заполняю размер и позиции объектов соответствующим образом. Я повторно заполняю divs и соответствующие объекты, затем вызываю jQuery $(). Draggable() внутри Шаблона. [Name] .rendered.

Template.pageEditor.rendered = function(){ 
     var currentBook = Books.findOne({_id: Session.get("currentBookId")}); 
     console.log(currentBook); 
     var currentPages = currentBook.pages; 
     console.log(currentPages); 

     for(i in currentPages){ 
      var currentElements = currentPages[i].elements; 
      var currentPageNumber = currentPages[i].number; 
      console.log(currentElements); 
      $(".pageEditor").append("<div class='page' id='page"+currentPageNumber+"' style='background-image: url("+currentPages[i].scene+");'></div>"); 
      for(j in currentElements){ 
       var element = "<div class='pageElement character inPage' style='top:"+currentElements[j].top+"; left:"+currentElements[j].left+";'><img src='"+currentElements[j].src+"' width='"+currentElements[j].width+"' height='"+currentElements[j].height+"'/></div>"; 
       console.log(element); 
       $("#page"+currentPageNumber).append(element); 

       //make element draggable 
       $(".pageElement.inPage").addClass("draggable"); 
       $(".draggable.pageElement").draggable({ 
        containment: "#page"+currentPageNumber, 
        scroll: false 
       }); 
} 
     } 

Проблема

Когда я пытаюсь перетаскивать объекты в первом Div положения (слева, вверху) значение становится некоторым отрицательным значением. Это происходит только с объектами в первом Div, который я добавляю в DOM. Когда я удаляю параметр удержания для draggable, он больше не получает отрицательные позиции, но он также больше не содержится.

Пожалуйста, помогите мне выяснить, как я могу справиться с этим странным поведением. Спасибо

+0

Если у вас нет встроенных стилей перед созданием 'draggable', он перестает иметь отрицательные значения? Я знаю, что это сломает то, что вы хотите сделать, но задаетесь вопросом, есть ли там проблема. Также какова позиция контейнера? статический, относительный, абсолютный? –

+0

@DaveStein Я попытался удалить встроенные стили, и значения по-прежнему становятся отрицательными при попытке перетащить. Элемент-контейнер имеет абсолютное позиционирование, иначе он не работает с jQuery Draggable. Любые другие предложения? –

+0

Добавить точку останова вправо до того, как вы перезвоните, и сразу после повторной рендеринга .... являются элементами, которые, по вашему мнению, должны быть? Все ли встроенные стили корректируются? –

ответ

4

Этот вопрос был специфичен для моей проблемы, но общая проблема здесь в том, как правильно использовать сдерживание для jQuery UI Draggable.

Решение

Поскольку мой селектор был одинаковым для всех элементов, которые я хотел бы перетаскивать они также должны иметь один и тот же параметр сдерживания. Если вы хотите иметь разные параметры сдерживания, вы должны иметь уникальные селекторы, иначе первый элемент, который вы вызываете draggable(), будет иметь переопределенный параметр сдерживания, и это странное поведение произойдет.

+1

отлично! .. выше было проблема, и это решение. Спасибо! ... –