javascript拖放表行

时间:2016-09-02 04:36:21

标签: javascript drag-and-drop html-table rows

这是我的表,它是动态的,我得到了三个具有不同ID的表。

{{#each a}}
    {{this.a}} //this is getting printed

    {{#each b}}
        {{this.b}} //this isn't getting printed
    {{/each}}
{{/each}}

我的Javascript是这样的:

<?php
echo "<table class='table table-hover table-bordered' ondrop='drop(event,this)' ondragover='allowDrop(event)' id='".$type."'>";
if(empty($players))
    echo "<tr><td></td></tr>";
foreach($players as $p)
{
    echo "<tr data-id='".$p['to']."' data-fixture='".$p['fixture']."' data-team='".$p['team']."' draggable='true' ondragstart='drag(event,this)' id='".$type."aa'>";
    echo "<td >".$p['name']."</td>";
    echo "</tr>";
}
echo "</table>";
?>

将表行从一个表中删除到另一个表时.tr被删除到td而不是表中。

像这样

function allowDrop(ev) {
    ev.preventDefault();
}


  function drag(ev,str) {
      //alert(str);

    var temp = str.parentNode;
    child = temp.children;
    if(child.length==1)
    {
    $(temp).append("<tr><td></td></tr>");
    }

    ev.dataTransfer.setData("text", ev.target.id);
    ev.dataTransfer.setData("val", ev.target.getAttribute('data-id'));
    ev.dataTransfer.setData("fixture", ev.target.getAttribute('data-fixture'));
    ev.dataTransfer.setData("team", ev.target.getAttribute('data-team'));
}


function drop(ev,str) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    var id = ev.dataTransfer.getData("val");
    var fixture = ev.dataTransfer.getData("fixture");
    var team = ev.dataTransfer.getData("team");
    ev.target.appendChild(document.getElementById(data));
    //alert(fixture);
    if(str.id=='avl')
        status=1;
    else if(str.id=='uavl')
        status=2;

            $.ajax({
       url: "<?php echo base_url();?>index.php/teams/update_players/"+status+"/"+id+"/"+fixture+"/"+team,
       type: 'GET',
       success: function(data) {
          //$("#a_p").html(data);
          //alert(data);
       },
        });

} 

1 个答案:

答案 0 :(得分:0)

您的drop功能会将孩子附加到ev.target。尝试使用console.log检查tagName ev.target。如果它是TD,那那就是你的问题。

请勿在评论部分提供,因为我没有足够的声誉来提交评论。