jQuery object unexpected behaviour -
मेरा कोड नीचे उपलब्ध है, और यहां:
var input = []; input.push ($ ( 'इनपुट')); $ (इनपुट) .live ('keydown', फ़ंक्शन (इवेंट) {console.log ('आपने एक कुंजी दबाई है!');}); मुझे उम्मीद है कि इस कोड को कंसोल में कीप्रेसेज़ का जवाब देना होगा। किसी कारण के लिए, यह नहीं है। इस कोड के साथ समस्या क्या है? (नोट: मुझे पता है कि इसे कैसे तय किया जाए, मुझे नहीं पता कि इसके साथ क्या गलत है!)
< P> आपका कोड एक कोड के रूप में jQuery के वस्तुओं की एक सरणी लेने के लिए $ () फ़ंक्शन की अपेक्षा कर रहा है आपके पास यह अनिवार्यतः है: $ ([$ ('इनपुट')]) प्रति, मुझे नहीं लगता कि यह उस का समर्थन करता है।
एक तत्व सरणी एक jQuery ऑब्जेक्ट एक तत्व एक तत्व कुछ HTML एक फ़ंक्शन नोट करने के लिए महत्वपूर्ण है कि यह jQuery ऑब्जेक्ट की एक सरणी नहीं ले जाएगा। एक तत्व सरणी, एक jQuery वस्तु सरणी के समान नहीं है, यद्यपि आप makeArray () पद्धति के साथ एक jQuery ऑब्जेक्ट से एक तत्व सरणी प्राप्त कर सकते हैं यदि आप वास्तव में चाहते थे। कई विकल्प हैं जो काम करेंगे:
सरलतम किसी भी मध्यवर्ती मूल्य को सहेजना नहीं है:
$ ('input')। Live ('keydown', फ़ंक्शन (इवेंट) {console.log ('आपने एक कुंजी दबाई है!');});
यह एक इनपुट सरणी में एक वास्तविक DOM तत्व हो जाता है ताकि इनपुट सरणी एक प्रकार का सरणी है जो jQuery फ़ंक्शन का समर्थन करता है (हालांकि मैं वास्तव में इसका उपयोग करने के लिए कोई कारण नहीं सोच सकता यह कोड):
var इनपुट = []; input.push ($ ( 'इनपुट') मिलता है (0)।); $ (इनपुट) .live ('keydown', फ़ंक्शन (इवेंट) {console.log ('आपने एक कुंजी दबाई है!');});
या, यदि कई इनपुट मान हैं, तो बस भविष्य में उपयोग के लिए jQuery के ऑब्जेक्ट को सहेजें:
var inputs = $ ('input' ); Inputs.live ('keydown', फ़ंक्शन (इवेंट) {console.log ('आपने एक कुंजी दबाई है!');});
या, यदि आप तत्व तत्व चाहते हैं, तो आप इसे इस तरह प्राप्त कर सकते हैं:
var input = $ ('input')। makeArray (); $ (इनपुट) .live ('keydown', फ़ंक्शन (इवेंट) {console.log ('आपने एक कुंजी दबाई है!');}); या, यदि आपके पास वास्तव में है तो jQuery ऑब्जेक्ट की एक सरणी है और आप उनको एक साथ एक नए एकल jQuery ऑब्जेक्ट में जोड़ना चाहते हैं, तो यह ऐसा करने का एक तरीका है:
/ P>
// var इनपुट jQuery ऑब्जेक्ट्स की एक सरणी है, जिसमें आप पहले से ही सभी allElements = [] हैं; डोम तत्वों की // नई खाली सरणी // jQuery वस्तुओं के लिए प्रत्येक से डोम तत्वों की सरणी होने का सरणी पर पुनरावृति (मैं वर = 0; मैं & LT; input.length; i ++) {allElements = allElements.concat ($ makeArray (। इनपुट [i])); } $ (सभी एलेमेंट्स) .live (...)
या, यह करने के लिए थोड़ा आसान तरीका:
var आइटम = $ .मैप (इनपुट, फ़ंक्शन (आइटम, इंडेक्स) {रिटर्न ($। मेकअरे (आइटम));}); $ (आइटम) .live (...)
या, अब मुझे एक jQuery ऑब्जेक्ट पर .add विधि () मिला है:
var $ items = इनपुट [0]; // सरणी के लिए सरणी में पहली jQuery ऑब्जेक्ट (var i = 1; i & lt; input.length; i ++) {$ items.add (इनपुट [i]); // अन्य लोगों को उस पर जोड़ें} $ items.keydown (function () {...}); संयोग से, मुझे पता है कि डोम तत्वों की सरणी को .live ('keydown') के साथ काम नहीं कर रहा है। मुझे पता नहीं क्यों इसके साथ काम करता है:
$ (आइटम) .keydown (...) और, क्योंकि आपके पास पहले से ही मौजूद DOM तत्व हैं, .live () का उपयोग करने का कोई कारण नहीं है आप केवल .keydown () । jsFiddle यहां काम कर सकते हैं:।
Comments
Post a Comment