2011-03-23 76 views
0

我正在一個頁面,用戶可以通過單擊插入域創建表單上的元素。最初沒有輸入元素存在於頁面上。用戶點擊創建它們。我試圖創建全局變量來引用這些輸入字段,所以我可以在以後使用這個,但由於輸入字段最初不存在於DOM中,因此全局變量給出了未定義的。無論如何繞過這個。我希望變量是全局的,因爲我想在其他函數中使用它們。jQuery的定義一個全局變量尚不存在於DOM

例:

var $selected = $('#form').find('.selected input').val(); //Global variable outside the function. Since this doesn't initially exist in DOM, it's giving undefined. 
+0

比go for document.ready方法 – 2011-03-23 05:21:05

回答

1

你到處都可以引用同一個變量。但是,由於DOM最初是空的,所以你必須在用戶創建這些對象時填充這些變量。

var $selected; 

說當用戶點擊一個按鈕來插入一個輸入元素。變量$selected此時必須更新。

function addTextInput() { 
    var input = $('<input type="text" value="awesome" />'); 
    $("form .selected").append(input); 

    // the global variable is being updated now. 
    $selected = $('#form .selected input').val(); 
} 
+0

+1,但要保持乾燥,我建議一個'函數reselectInputs(){$選擇= $( '#形式.selected輸入')VAL()。 };' - 可以想象,這些變化可能發生在代碼中的幾個地方。 – Amadan 2011-03-23 05:31:25

+0

@Amadan - 最好不要回復全局變量,而是使用所有函數,包括獲取輸入字段的值。 – Anurag 2011-03-23 05:38:51

+0

我原本在我的回答中建議如此,但OP想要緩存結果。你的答案是最接近他的願望的。 – Amadan 2011-03-23 05:45:16

1

如果輸入變化的收集,爲什麼你希望它在一個變量靜態拍攝?每次需要時只需選擇它們。

+0

我有很多用途。我按類來引用全局變量。每種輸入類型都有一個類。全局變量的原因是我可以緩存變量,而不必每次都重新創建一個對象。 – Pinkie 2011-03-23 05:26:04

+0

那時,我建議的做法是,你實際上把它當作緩存:只要你做任何可能改變集合,重新選擇它,因爲@Anurag建議。 – Amadan 2011-03-23 05:30:12