2014-09-01 169 views
0

我有一個關聯數組,其中包含jQuery對象,我想循環設置每個數值。通過jQuery對象循環訪問

我是比較新的的JavaScript/jQuery的,但是這是我想沒有任何的運氣:

var inputs = [ 
    { key: "firstName",   val: $("#signup input[name=firstName]") }, 
    { key: "lastName",   val: $("#signup input[name=lastName]") }, 
    { key: "email",    val: $("#signup input[name=email]") }, 
    { key: "confirmationEmail", val: $("#signup input[name=confirmationEmail]") }, 
    { key: "password",   val: $("#signup input[name=password]") }, 
    { key: "terms",    val: $("#signup input[name=terms]") } 
]; 

inputs.each(function() { 
    $(this).val("test"); 
}); 
+0

你是不是說你想要做什麼。 – 2014-09-01 15:13:21

+2

'inputs'是一個數組,不是一個jQuery對象,所以你不能將'each()'方法應用到它。但是,您可以使用'$ .each()'函數,但是您仍然無法將'val()'應用於項目本身(因爲它們是普通對象)。 – 2014-09-01 15:13:29

+0

你是否知道你只需要一個選擇器來完成所有的選擇?你爲什麼使用數組? – melancia 2014-09-01 15:13:46

回答

7

在新的瀏覽器,你不需要的jQuery爲:

inputs.forEach(function(input) { 
    console.log("key is " + input.key); 
    input.val.val("test"); 
}); 

.forEach()方法是內置的。如果必須使用jQuery .s。每()`它會是這樣的:

$.each(inputs, function(index, input) { 
    console.log("key is " + input.key); 
    input.val.val("test"); 
}); 

注意$.each()調用與元素的索引作爲第一個參數和元素本身的回調函數jQuery的第二。原生.forEach()按相反順序通過。

最後只是作爲一個音符,你可以在「註冊」元素下設置所有<input>值與

$("#signup input").val("test"); 
0

試試這個:

$.each(inputs, function(){ $(this).val("test")});