使用可排序HTML表格的jQuery UI


79

我想在HTML表格中从数据库中输出一些数据,并且希望用户能够对表格行进行重新排序。为此,我使用了可排序的jQuery UI,因此:

<script>
    $(function() {
        $( "#sortable" ).sortable();
        $( "#sortable" ).disableSelection();
    });
    </script>
<?php 
 while($row = mysql_fetch_assoc($co_authors)) {
                    echo "<tr id='sortable'><td>{$row['author_email']}</td>
                         <td>{$row['coauthor_level']}</td>";
                         <td><button class='remove' id='remove' name='remove' email="<?php echo $row['author_email'] ?>"
                            paper="<?php echo $row['paper_id'] ?>">Remove</button></td>
                         </tr>";
                }
?>

问题是当我拖动表格时tr,只会td被拖动。而且,最重要的是,只有第一行是可拖动的:该效果不会应用于其他行。我该如何解决?


4
id属性在文档中必须唯一。您的代码正在创建多个具有相同idsortable)的元素。尝试使用class代替。
弗雷德里克·哈米迪

对于它的价值-如果可以使用此方法对行进行排序,则td带有contenteditable属性的s似乎不可编辑。仅供参考。
jg2703

Answers:


194

你可以叫sortable<tbody>,而不是对个人行。

<table>
    <tbody>
        <tr> 
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td>4</td> 
        </tr>
        <tr>
            <td>5</td>
            <td>6</td>
        </tr>  
    </tbody>    
</table><script>
    $('tbody').sortable();
</script> 


现在可以正常工作了,整个tr都是可拖动的,但是现在新的问题是tr的位置不会改变,我想是因为我从数据库中获取数据并且它们应该按照该顺序排列,所以我可以更改位置在数据库中吗?
Samer El Gendy 2012年

是的,如果您想保留已排序的职位,则必须将该信息保留在某个地方。
TJ VanToll 2012年

3
谢谢!!我太害怕了,我将不得不重做整个设计,而且我只有一个小时的时间才能使它工作,谢谢大家!
NaturalBornCamper 2014年

5
代表user236766张贴:您可能希望将最后一个更改<tbody></tbody>;)
NathanOliver

不知道为什么我决定在桌子上而不是tbody元素上调用sortable……谢谢!
ksudu94
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.