2017-08-01 76 views
1

我有一個疑問使用jQuery在文本框代替某些字符與我登上in this question.接受的答案建議是這樣的:帶參數的Javascript匿名函數。這些參數在哪裏定義?

$("#mySelector").val(function(i, v) { //i, v... where they come from?? 
return v.replace("#","Custom Text"); 
}); 

這工作正常,但我仍然有同樣的疑問。這些參數,iv。他們來自哪裏以及他們如何填充數據?它們沒有在任何地方宣佈。在這種情況下,iv如何獲得我需要的數據?

These answers談論它,但它似乎只是一個過於複雜的解釋,應該是一件容易的事情來解釋。

所以,問題很簡單。匿名函數中的這些參數如何在世界中充滿數據。如果我沒有在任何地方宣佈它們,它們從哪裏來?

+4

閱讀文檔:http://api.jquery.com/val/#val-function – Adam

回答

4

它們是在jQuery庫調用回調函數時設置的。請注意,您正在將函數作爲參數傳遞給$.val函數。 $.val函數將值傳遞給您傳遞給它的函數。

這裏是回調是如何工作的一個簡單的例子:

function coolFunction(callback) { // accepting callback 
 
    // extra processing here 
 
    callback(1, 2);     // calling the callback 
 
} 
 

 
coolFunction(function(a, b) { // passing function as callback 
 
    console.log('annonymous', a, b); 
 
});

+1

這是怎麼了應該寫一個答案。簡短,簡潔,易於理解。謝謝! – SamyCode

+0

@SamyCode,很高興我能幫到你!感謝你的接納。 –

0

jQuery函數val檢查傳遞給它的參數。當它找到一個函數時,它會爲包含在選擇器中的每個元素調用它,其中i是選擇器中元素的索引,v是值...即元素的值。