2012-03-30 24 views

回答

0

變化var order = $("#boxes").sortable("toArray");

var order = $("#boxes").sortable("toArray").join(',').replace(/[a-zA-Z]/gi, "");

演示:http://jsfiddle.net/82r5v/13/

0
// Remove all non-digits from the string 
'box1'.replace(/\D/g, ''); // => '1' 
// Same, but try to make the string a number 
Number('box1'.replace(/\D/g, '')); // => 1 
// Shorthand for making an object a number (+o is the same as Number(o)) 
+'box1'.replace(/\D/g, ''); // => 1 
// parseInt(s) works if the number is at the beginning 
parseInt('1box'); // => 1 
// but not if it occurs later 
parseInt('box1'); // => NaN 
2

只能得到數只需更換盒串出來。

DEMO

for (var i = 0; i < order.length; i++) { 
    order[i] = order[i].replace('box', ''); 
} 
+1

+1擊敗我吧! – msanford 2012-03-30 17:50:42

+0

出於興趣,在正則表達式方法中使用它有什麼優勢? – 2012-03-30 17:55:13

+1

@benedict_w對我來說,這將是可讀性。正則表達式可以看作是一個過度設計的解決方案,以實現「無需替換」字符串。如果你在流利的正則表達式,它可能很容易掃描。但我認爲,我們中的許多人在每次使用正則表達式時仍會諮詢我們的資源。 ;-)我喜歡將它保存爲一種簡單替換不夠好的情況。 – 2012-03-30 17:57:15

2

所以不是box1, box2, box3, box4你想看到1,2,3,4

您可以使用正則表達式像this

var order = $("#boxes").sortable("toArray") + ""; 
alert(order.replace(/[^0-9,]/g, '')); 

我也不得不追加一個空字符串order,因爲它不被識別爲字符串對象,即使jQuer y的文件說,它應該是當你撥打sortable("toArray")

0

也許使用正則表達式是這樣的:

`alert(order.join(',').match(/\d/g));` 

要返回數組作爲數字。

\d匹配所有的數字,g標誌着一個全球性的比賽通配符)

0

的一種方法,通過使用正則表達式來做到這一點 - http://jsfiddle.net/holodoc/82r5v/14/

$(document).ready(function() { 

    var arrValuesForOrder = ["2", "1", "3", "4"]; 
    var ul = $("#boxes"), 
     items = $("#boxes li.con"); 

    for (var i = arrValuesForOrder[arrValuesForOrder.length - 1]; i >= 0; i--) { 
     // arrValuesForOrder[i] element to move 
     // i = index to move element at 
     ul.prepend(items.get(arrValuesForOrder[i] - 1)); 
    } 

$("#boxes").sortable({ 
    handle : '.drag', 
    update: function() { 
     var order = $("#boxes").sortable("toArray"); 
     var sorted = []; 
     $.each(order, function(index, value){ 
      sorted.push(value.match(/box(\d+)/)[1]);     
     }) 
     alert(sorted); 
    } 
}); 

});