2010-06-07 56 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

相關問題