2016-10-22 92 views
0

我想在for循环中动态创建表可拖动和可拖动。它不工作。对于静态表,它工作正常。小提琴herejquery droppable和draggable无法在for循环中动态创建表

的Javascript:

$(document).ready(function() { 
    $("#button1").click(function() { 
     for (var j = 1; j < 4; j++) { 
      var table = document.createElement("table"); 
      var tbody = document.createElement("tbody"); 
      for (var i = 1; i < 5; i++) { 
       var tr = document.createElement("tr"); 
       var td1 = document.createElement("td"); 
       var td2 = document.createElement("td"); 

       var text1 = document.createTextNode("Text" + j + "-" + 1 + i); 
       var text2 = document.createTextNode("Text" + j + "-" + 2 + i); 

       td1.appendChild(text1); 
       td2.appendChild(text2); 
       tr.appendChild(td1); 

       tr.appendChild(td2); 

       tbody.appendChild(tr); 
       table.appendChild(tbody); 

       //var id = "a" + j + "." + i; 
       //tr.attr({"id",id}).appendTo(table); 
       // tr.setAttribute("id", id); 
      } 

      document.getElementById("tb").appendChild(table); 
      table.setAttribute("id", "t" + j); 
      tbody.setAttribute("id", "tb" + j); 
      $("#" + "tb" + j).sortable({ 
       items: "> tr:not(:first)", 
       appendTo: "parent", 
       helper: "clone" 
      }).disableSelection(); 
     } 
    }); 
}); 

HTML:

<button id="button1"> 
    button1 
</button> 
<div id="tb"> 
</div> 
+1

请提供有关您的问题的进一步信息。 “它不工作”根本不是一个有效的问题描述。 –

+0

添加$(#id).sortable()代码后,表格甚至没有被创建。它假设每个创建3行,每行4行。表格行假定为可拖动和可拖放的。但他们不是 – NZLearner

回答

0

的jQuery UI库添加到项目中的jQuery后:

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

之后,你的代码工作正常。这是一个JS Bin

+0

非常感谢你,阿尔曼。它像一个魅力。我对编程相对陌生。我把代码放在中,它没有用。但如果我把它放在身体里,它就行了。你能告诉我为什么这是吗? – NZLearner

+0

只要将** jquery-ui.js **放在** jquery.js **之后并将代码包装在jQuery的'.ready()'方法中,那么它是否应该放在'身体“或”头部“。看看[这个例子](http://jsbin.com/zahozedigo/1/edit?html,js,output)。顺便说一下,你的jQuery版本(如果你的小提琴是准确的)'.ready()'的推荐用法是......。像'$(function(){你的代码在这里...});'。检查[文档在这里](http://api.jquery.com/ready/#entry-longdesc)出于原因 –

+0

再次感谢阿尔曼。有趣的是,在你上面的例子中,图书馆被放在脑海里,有时候它不起作用。如果你点击按钮,它只会给第一个表格不是全部3个表格。但有时它可以正常工作。它是否也会从你的结尾发生。顺便说一句,感谢.ready()信息。 – NZLearner