所有可愛的東西的jQuery不談,這裏是一個通用的 「壓縮」 功能。
a
和b
應該是數組(或至少是數組)。如果fn
提供,這將作爲地圖在每個對的項目。請記住,jQuery對象是數組。
function zip (a, b, fn) {
var len = Math.max(a.length, b.length)
var result = []
if (fn) {
for (var i = 0; i < len; i++) {
result.push(fn(a[i], b[i]))
}
} else {
for (var i = 0; i < len; i++) {
result.push([a[i], b[i]])
}
}
return result
}
實施例:
var z = zip([1,2,3], ['a','b'])
// z = [[1,'a'],[2,'b'],[3,undefined]
for (var i = 0; i < z.length; i++) {
var elm = z[i]
var a = elm[0]
var b = elm[1]
alert(a + "-" + b)
}
實施例與fn
:
zip([1,2,3], ['a','b'], function (a, b) {
alert(a + "-" + b)
})
實施例jQuery'ish上下文:
var total = 0
zip(
$('[name="quantity\\[\\]"]'),
$('[name="price\\[\\]"]'),
function (a, b) {
// if either a or b are undefined, there is already a problem
// the `expr || 0` is to silently handle cases of `NaN || 0` which may
// result if the price or quantity are garbage values
var qty = parseInt($(a).val(), 10) || 0
var price = parseInt($(b).val(), 10) || 0
total += qty * price
})
編碼愉快。
是否有同樣數量的兩組輸入?你可以顯示你正在使用的標記嗎?也許[JS小提琴演示](http://jsfiddle.net/)? – 2011-06-07 22:13:00
這些字段是否在頁面上成對出現? – 2011-06-07 22:21:19
@大衛托馬斯@ŠimeVidas是他們成對出現,並且總是有相同數量的兩個輸入。 – dqhendricks 2011-06-07 22:26:28