2013-08-26 58 views
0

我使用json文件中的数据创建和定位一些div元素(书桌),并将可拖动的jQuery函数应用于它们。这工作正常,除了一件小事情,当你去点击并移动divs,他们跳下屏幕大约一英寸。为什么会发生这种情况,如何解决?谢谢 :)。jQuery的可拖动函数

$(document).ready(function(){ 
$("a").click(function(event) { 

    alert("Thanks for visiting!"); 
    $("#desk").draggable(); 
}); 
$.getJSON("static/js/desks_dc.json", function(data){ 
    console.log(data); 

    factor = 1.228; 

    for(var i = 0; i< data.desks.length; ++i){ 
     var div = document.createElement("div"); 
     var desk_label = (data.desks[i].id); 
     div.style.position ='absolute'; 
     div.style.height= '15px'; 
     div.style.width= '25px'; 
     div.style.textAlign= 'center'; 
     div.style.color='#999998'; 
     div.style.fontFamily= 'Verdana, Arial, Sans-Serif'; 
     div.style.top = (data.desks[i].top-522.529)*factor+'px'; 
     div.style.left = (data.desks[i].top-45.882)*factor+'px'; 
     div.style.backgroundColor='#CCCCCC'; 
     div.style.text= desk_label; 


      /*Choose Desk Color*/ 
      if(data.desks[i].research == "Thermal") 
      { 
       div.style.backgroundColor='#F03005'; 
      } 
      else if(data.desks[i].research == "Fluids") 
      { 
       div.style.backgroundColor='#0520F0'; 
      } 
      else if(data.desks[i].research == "Solids") 
      { 
       div.style.backgroundColor='#15D615'; 
      } 
      else if(data.desks[i].research == "Materials") 
      { 
       div.style.backgroundColor='#E8F005'; 
      } 
      else if(data.desks[i].research == "Mechatronics") 
      { 
       div.style.backgroundColor='#6324B5'; 
      } 
      else{ 
      } 

      div.id = 'desk'; 
      $(div).draggable(); 
      document.body.appendChild(div); 
     } 
}); 

}); 

回答

0

一件事,你申请$.draggable()两次,你并不需要在您的$(a).click()做一遍。

此外,用绝对定位的元素做这件事并不是一个好主意,看看你是否可以把你的<div>放在一个绝对定位的容器中,并将它们保持在相对位置。

0

你会想要这样做,以便div在被附加到DOM之后才变为可拖动状态,而不是之前。也许只是将它附加到你的ajax调用中,然后在你的点击事件中使其可拖动。