सफलता कॉलबैक फ़ंक्शन लॉग के नीचे कोड उदाहरण में प्रत्येक इनपुट इनपुट के बजाय चार बार 'इनपुट # 04.update' लॉग करता है, जो यह समझ में आता है कि बंद कैसे काम करता है लेकिन मैं प्रत्येक को लक्षित करने के बारे में कैसे जाऊं इसका उपयोग कर व्यक्तिगत इनपुट।AJAX क्लोजर और लक्ष्यीकरण 'यह'
<input type="text" name="" id="01" class="update">
<input type="text" name="" id="02" class="update">
<input type="text" name="" id="03" class="update">
<input type="text" name="" id="04" class="update">
function updateFields(){
$('input.update').each(function(){
$this = $(this);
$.ajax({
data: 'id=' + this.id,
success: function(resp){
console.log($this);
$this.val(resp)
}
});
});
}
यह आश्चर्यजनक है ... लेकिन ... क्या आप मुझे ऐसा करने का तकनीकी कारण बता सकते हैं? मेरा मतलब है, मैं कभी-कभी 'var' जोड़ना भूल जाता हूं ... और मुझे कोई समस्या नहीं है। लेकिन आपके शब्द डरावने हैं, और अब से मैं 'var' जोड़ना नहीं भूलूंगा। वैसे भी ... क्या आपके पास इस तरह की समस्याओं के लिए तकनीकी स्पष्टीकरण है? – Cristian
कारण: आपकी 'सफलता' हैंडलर, अज्ञात फ़ंक्शन एक '$ this' चर का संदर्भ देता है जो वैश्विक है। तो इस अज्ञात फ़ंक्शन के 4 उदाहरणों में से प्रत्येक एक ही चर का संदर्भ देता है और इसलिए वही मान, क्योंकि प्रत्येक 'फ़ंक्शन' लौटने के बाद उन्हें निष्पादित किया जाता है। – Alsciende
@ क्रिस्टियन - 'var' के बिना, यह एक वैश्विक चर है जो आप प्रत्येक लूप को अपडेट कर रहे हैं, इस बंदरगाह के दायरे में स्थानीय नहीं, जो आप चाहते हैं कि यह इस मामले में हो। –