2010-05-28 23 views
3

我想找出正確的正則表達式來匹配列表項ID。用正則表達式排序的jquery

例如:

<ul id="MyList" class="connectedSortable"> 
    <li id="id=1-32">Item 1</li> 
    <li id="id=2_23">Item 2</li> 
    <li id="id=3">Item 3</li> 
    <li id="id=4">Item 4</li> 
    <li id="id=5">Item 5</li> 
    <li id="id=6">Item 6</li> 
</ul> 

在serialize方法,我希望它等號(=)之後拉一切。例如,對於第一項我需要的ID是1-32,第二我需要它是2_23。

$(function() { 
     $("#MyList, #OtherList").sortable({ 
      connectWith: '.connectedSortable', 
      update: function() { 
       $("#MyListOrder").val($("#MyList").sortable('serialize', { regexp: '/(.+)[=](.+)/)' })); 
      } 
     }).disableSelection(); 
    }); 

我試過上面的,但那並沒有起作用。我的正則表達式是錯誤的,我不知道它應該是什麼。想法?

UDPATE: 而不是使用序列化方法,我決定使用toArray。這樣我就可以得到整個ID,並且可以撕掉我不需要服務器端的部分。

回答

4

根據規範,該選項應該命名爲「expression」,除非傳遞正則表達式,否則在字符串中不需要/.../。這工作:

.sortable('serialize', { expression: '(.+)=(.+)' }) 

或:

.sortable('serialize', { expression: /(.+)=(.+)/ }) 

工作實例:http://jsbin.com/oqejo3/2

+0

沒有相當的工作,我認爲jQuery的仍然與輸出擰緊。例如:id = 1 [] = 32&id [] = 4&id = 2 [] = 23&id [] = 3&id [] = 5&id [] = 6謝謝你,決定使用toArray。 – NotMe 2010-05-28 18:43:59

+0

@Chris Lively - 看到更新後的版本,我認爲它解決了你的問題。在我發佈答案後,我繼續測試它,它不適用於jQuery UI。 – Kobi 2010-05-28 18:58:03

+0

這是完美的。謝謝, – NotMe 2010-05-28 19:55:15