2012-03-06 63 views
0

我正在使用以下代码来允许管理员使用列表。然后我想用这个新的排序顺序更新我的数据库。在jQuery可排序列表中排序后提取项目顺序

<div id="item_list"> 
    <ul id="sortable"> 
     <?php 
     $i=1; 
     foreach ($row_Item as $row){ 
      echo ("<li><span></span><table><tr><td class=\"input_td\">" . $row['item_name'] . "</td><td class=\"input_td_right\">" . $row['program_sort'] . "</td><td class=\"input_td_right\">$" . number_format($row['prog_earnings'],0,".",",") . "</td><td class=\"input_td_right\">" . $i . "</td></tr></table></li>"); 
      $i=$i+1; 
     } 
     ?> 
    </ul> 
</div> 

这些项目是通过由子程序计算的$ row ['program_sort']值初始排序的。这个列表需要管理员通过按列表顺序移动几个项目来调整。

我不明白如何使用jQuery seralize方法提取新订单,因为它与每个li中的$ row ['item_name']有关。我是否必须为每个li使用id,也许等于$ row ['item_name']?我需要的东西就像item_name1 => 5,item_name2 => 2,item_name3 => 4如果用户将列表移动到这些位置。然后我可以用新的排序顺序更新数据库。

在jQuery中使用新的东西时,我似乎总是需要一点帮助。有人能给我一点帮助吗? 谢谢

回答

0

jQuery serialize()需要表单元素,但在代码中看不到任何内容。您可以使用自己的脚本来创建排序顺序对象,例如:

function getSortOrder() { 
    var oList = {}; 
    $('#item_list li').each(function(iIndex, oElement) { 
     oList[$(oElement).find('td:first').text()] = iIndex + 1; 
    }); 
    return oList; 
} 

另见this example

+0

我不得不改变javascript,现在它是最终的:) – scessor 2012-03-06 08:20:23

+0

我已经更新了示例,现在列表也可以排序。 – scessor 2012-03-06 08:41:09

+0

感谢您的所有努力。我想我现在可以开始工作。 – user1028866 2012-03-06 08:56:17