आमतौर पर ऐसे मामले में जहां jQuery अपने चयनकर्ता का उपयोग करके मिलान तत्वों को खोजने में विफल रहता है, डिफ़ॉल्ट मान कभी अपवाद नहीं होता है, बल्कि कार्रवाई का अभाव होता है।
मेरी समझ यह डिज़ाइन द्वारा किया जाता है ताकि यह सुनिश्चित किया जा सके कि किसी तत्व की कमी के परिणामस्वरूप त्रुटि की स्थिति नहीं है। हालाँकि मुझे वह मिल गया है jQuery.val()
इसी व्यवहार को प्रदर्शित नहीं करता है। यदि एक चयनित तत्व मौजूद नहीं है jQuery.val()
वापस होगा undefined
एक खाली स्ट्रिंग के बजाय (जो कि मुझे उम्मीद है कि शेष ढांचे के अनुरूप है)।
तो क्यों है jQuery.val()
बाकी ढांचे के लिए एक अपवाद और इस व्यवहार को बदलने का सबसे अच्छा तरीका क्या होगा?
उत्तर:
उत्तर № 1 के लिए 6यहाँ कुंजी है chainability jQuery के तरीकों की। एक jQuery विधि वापस नहीं आती है undefined
जब एक चयनकर्ता कुछ भी नहीं करता है क्योंकि यह श्रृंखला को तोड़ देगा।
$( "#doesntExist" ).addClass( "foo" ).fadeIn();
अगर चयनकर्ता जो कुछ भी नहीं करता है, तो वह वापस आ जाएगा undefined
तब से यह श्रृंखला टूट जाएगी undefined
doesn "t की अपनी कोई भी विधि है। अब हर विधि को निष्पादित किया जाता है (और कुछ भी नहीं) तत्व पाया जाता है या नहीं।
.val()
दूसरी ओर से अलग है क्योंकि यह उद्देश्य है किसी तत्व का मान लौटाएं। यह कई अन्य jQuery तरीकों के विपरीत बिल्कुल भी नहीं है, क्योंकि एक विधि को श्रृंखला में सक्षम होने के लिए एक jQuery वस्तु को वापस करना है। उदाहरण के लिए। $( "#foo" ).val().addClass( "bar" )
काम नहीं करता चाहे तत्व हो #foo
मौजूद है या नहीं.
इस प्रकाश में .val()
खाली स्ट्रिंग लौटाने से यह अधिक नहीं होगाचेनेबल विधियों के अनुरूप, चूंकि कोई अन्य विधि एक रिक्त स्ट्रिंग नहीं लौटाती है, जब तत्व isn "t या तो नहीं मिलता है, और अपरिभाषित लौटने से चेनबिलिटी नहीं टूटती है क्योंकि विधि पहले स्थान पर t चेन नहीं है।
(वैसे, हर विधि के लिए वही सही है जो मान लौटाता है, जैसे .css()
तथा .data()
।)
आमतौर पर यह जानना अधिक उपयोगी होता है कि क्या किसी तत्व का मूल्य खाली है या तत्व तत्व मौजूद नहीं है या नहीं, लेकिन यदि आप हमेशा एक स्ट्रिंग प्राप्त करना पसंद करते हैं तो आप अपनी खुद की एक विधि जोड़ सकते हैं:
$.fn.stringVal = function() {
return( this.val() || "" );
};
जवाब के लिए 2 № 2
अगर मैं उपयोग करता हूँ .val()
किसी वस्तु का मूल्य पाने के लिए, मैं उस वस्तु के अस्तित्व की अपेक्षा करता हूं। यदि ऐसा नहीं है, तो मुझे यह जानना चाहिए। रिटर्निंग undefined
इस मामले में सबसे अच्छा तरीका लगता है।
जैसा कि @Ricardo ने बताया है, .val()
इनपुट के आधार पर अन्य मामलों में भी अलग-अलग प्रदर्शन करता है।
उत्तर के लिए -2 № 3
jQuery.val () एक इनपुट का मान लौटाता है (या "चयन करें" का चयनित विकल्प)