2010-06-07 26 views
1

目前我有两个(也许更多)无序列表,这些列表可以用jquery和ui进行排序。Javascript获取li值并对它们进行编码

工作的事情是,列表连接,项目可拖动,项目可以被删除,并添加到列表中的表单。

然而,我需要的是一个函数,获取李项目的所有内容和json编码它们准备发送到某些数据库函数,或其他东西。

即时通讯新的jQuery,但无法找到文件的李项目。

希望我解释得很好。

丹尼尔

更新 - 示例代码

<script type="text/javascript"> 

    function addSortable(value) { 
     $("#sortable1").prepend("<li class='ui-state-default' id='"+value+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span>"+value+"</li>"); 
    } 

    function deleteItem(value) { 
     $("#item-"+value).fadeOut('slow'); 

     $('#sortable1 li').each(function() { 
      var text = $(this).text(); 
     }); 

     document.getElementById('jsoningreds').innerHTML = text; 

    } 

    $(function() { 
     $("#sortable1, #sortable2").sortable({ 
      connectWith: '.connectedSortable' 
     }).disableSelection(); 
    }); 
    </script> 

    <ul id="sortable1" class="connectedSortable"> 

    <li id="item-0" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>8 large chicken thighs, skinned <a href="javascript:deleteItem(0)" class="deleteItem"></a></li> 

    <li id="item-1" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>seasoned flour (celery salt, cayenne pepper, paprika and white pepper) <a href="javascript:deleteItem(1)" class="deleteItem"></a></li> 
    <li id="item-2" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>2 small eggs, beaten <a href="javascript:deleteItem(2)" class="deleteItem"></a></li> 
    <li id="item-3" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>100g butter <a href="javascript:deleteItem(3)" class="deleteItem"></a></li> 
    </ul> 

    <hr /> 

    <h3>Recipe number 2</h3> 
    <ul id="sortable2" class="connectedSortable"> 

<li id="item-5" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>3 tsp vegetable oil <a href="javascript:deleteItem(5)" class="deleteItem"></a></li> 
    <li id="item-6" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>1 bay leaf <a href="javascript:deleteItem(6)" class="deleteItem"></a></li> 
    <li id="item-7" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>250g onions, finely sliced <a href="javascript:deleteItem(7)" class="deleteItem"></a></li> 
    </ul> 

    <p id="jsoningreds">hello</p>  
+0

一些示例代码会帮助一吨。你可以用'$('li')''找到所有的li元素。一旦你有了它们,'.each()'方法将允许你迭代它们。 – 2010-06-07 16:54:59

回答

4

你可能想看看.sortable('serialize') - 它可以解决您的问题,为您提供:

序列化可排序的项目ID的 成form/ajax提交字符串。 调用此方法产生的散列 可以附加到任何网址到 轻松提交一个新的项目订单返回到 服务器。

其工作原理是通过默认的格式 'setname_number'看 ID每个项目的,它吐出 哈希像 "setname[]=number&setname[]=number"

您也可以在选项散列中输入 自定义的第二个参数定义该函数的工作方式 。可能 选项有:key(取代part1[] 与任何你想要的),attribute (考比id另一个属性)和 expression(使用自己的正则表达式)。

如果serialize返回空字符串, 请确保id属性包含 下划线。他们必须是形式: "set_number"例如,3元 列表与ID属性foo_1foo_5foo_2将序列化到 foo[]=1&foo[]=5&foo[]=2。您可以使用 下划线,等号或连字号 分开设置和数字。对于 示例foo=1foo-1foo_1全部 序列化为foo[]=1

如果serialize确实比你更需要,.sortable('toArray')应该回到你包含id S IN的排序每个元素的数组。

+0

+1 - 比我给出的答案好。 – user113716 2010-06-07 17:15:46

+0

@帕特里克:同意这一点+1 – Sarfraz 2010-06-07 17:27:00

相关问题