इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
मैं jquery का उपयोग कर रहा हूँ निर्धारित करने के लिए एक एजेक्स अनुरोध करें कि क्या कोई विशिष्ट रेडियो बटन क्लिक किए जाने पर उसे एक डिवा खोलना चाहिए। मैं चाहता हूं कि वह डिवा जो सीधे रेडियोन बटन के तहत प्रदर्शित होने के लिए खुलता है जो कि चुना गया है। मेरे पास निम्न काम है जो महान काम करता है:
& lt; script language = "javascript" & gt; $ (दस्तावेज़)। $ ("। Option_select") क्लिक करें (फ़ंक्शन () {$ (this) .next ()। बाद ($ ('# show_pop')); $ .एजेक्स ({ डेटा प्रकार: 'jsonp', url: "/ jrequest", डेटा: {क्रिया: "दो", विकल्प: पो,}, सफलता: फ़ंक्शन (प्रतिक्रिया) {यदि (प्रतिक्रिया ['SomeResponse']) {$ ('# show_pop ')। स्लाईडडाउन ("धीमा");} और ($ (' # show_pop ')। Hide ();}}, त्रुटि: फ़ंक्शन (xmlhttp) {console.log (xmlhttp)}}});}}); }); & Lt; / स्क्रिप्ट & gt; & Lt; इनपुट प्रकार = "रेडियो" नाम = "विकल्प 1" वर्ग = "विकल्प_सच्चे" मान = "विकल्प 1" / & gt; विकल्प 1 & lt; इनपुट प्रकार = "रेडियो" नाम = "विकल्प 2" वर्ग = "विकल्प_सच्चे" मान = "विकल्प 2" / & gt; विकल्प 2 & lt; इनपुट प्रकार = "रेडियो" नाम = "विकल्प 3" वर्ग = "विकल्प_सच्चे" मान = "विकल्प 3" / & gt; विकल्प 3
मुझे समझ में नहीं आ रहा है कि मैं अजाक्स की "सफलता" के भाग के रूप में "बाद" क्यों नहीं कर सकता? उदाहरण के लिए, यदि मैं रेखा को
$ (this) .next ()। ($ ('# Show_pop') के बाद);
यहां:
.... सफलता: फ़ंक्शन (प्रतिक्रिया) {यदि (प्रतिक्रिया ['SomeResponse']) {$ (यह) । अगले () के बाद ($ ( '# show_pop')); // यह रेखा यहां $ ('# show_pop') काम नहीं करती है। स्लाइड डाउन ("धीमा"); } और {$ ('# show_pop')। Hide (); }}, ....
फिर मेरे डिवा मेरे फार्म से ऊपर खुलते हैं, प्रत्येक विकल्प के नीचे नहीं।
यह सफलता कॉलबैक में, jQuery ऑब्जेक्ट नहीं है, लेकिन कॉल में उपयोग की जाने वाली एजेक्स सेटिंग (
$। Ajax settingsettings इस कॉल को
$ .jax के साथ विलय कर दी गई है।]
इसमें विभिन्न प्रकार के समाधान हैं:
पुनः कोड
अन्य भाषाओं के साथ, जेएस आपको
इस चर, जिसका दायरा के आधार पर स्वयं का विशेष अर्थ है अन्य चर नामों पर ऐसा प्रतिबंध नहीं हो सकता है और निचले स्कोप में स्वतंत्र रूप से उपयोग किया जा सकता है।
$ ("। Option_select") क्लिक करें (फ़ंक्शन () {var $ this = $ (this) ; / * कटाई * / सफलता: फ़ंक्शन () {$ this.next ();}
उपयोग करें
फ़ंक्शन.बंड या
$। प्रॉक्सी < / कोड>
आपको बाद में कॉल करने वाले फ़ंक्शन के संदर्भ सेट करने की अनुमति देता है। यह
.call और
.apply जैसा है, लेकिन यह
.bind द्वारा सेट संदर्भ, इसलिए इसे अजाक्स कॉलबैक के साथ इस्तेमाल किया जा सकता है (जो मुझे बाद में
.call का उपयोग करने लगता है, लेकिन मेरे पास नहीं है) यह सत्यापित है)।
jQuery में एक ऐसा तरीका है जो एक ही काम करता है लेकिन ब्राउज़र के साथ संगत है जहां
function.bind उपलब्ध नहीं है। यह थोड़ा अलग तरीके से काम करता है और एक jQuery विधि है
फ़ंक्शन विधि के बजाय, लेकिन इस मामले में इससे कोई फर्क नहीं पड़ता।
सफलता: फ़ंक्शन () {/ * आपका कोड * /} .bind ( यह) सफलता: $। प्रॉक्सी (फ़ंक्शन () { / * आपका कोड * /}, यह)
दोनों तरीकों से फ़ंक्शन वापस आती है।
व्यक्तिगत तौर पर मुझे यह सबसे अधिक सही समाधान हालांकि वे सभी अनिवार्य रूप से समान कार्य करेंगे।
उपयोग करें
$। एजेक्स
संदर्भ
आप इसे
$। AjaxSettings सामान्य रूप में, लेकिन संभवत: इस मामले में यह अर्थ नहीं होगा। यह सेटिंग
$ .jax के लिए सभी कॉलबैक के लिए संदर्भ सेट करता है। >
$। एजेक्स ({संदर्भ: यह,
ऊपर दिए गए उदाहरणों में
यह का उपयोग करें।
ध्यान दें कि
$। Ajax ({ घोषणा अपनी स्वयं की गुंजाइश नहीं बनती है। इस प्रकार यह सुरक्षित है Do:
$ ("। Option_select")। ("पर क्लिक करें", फ़ंक्शन () {$। एएक्सएक्स ({सफलता: फ़ंक्शन () {} .bind (this)}); });
ऊपर,
यह अभी भी
.click कॉलबैक के संदर्भ के रूप में DOM तत्व jQuery सेट है। केवल अन्य स्कोप बनाया
फ़ंक्शन () {} से होता है, लेकिन आप
इस से बाहर का उपयोग करते हैं।
No comments:
Post a Comment