Saturday 15 March 2014

javascript - Assigning .onmousedown with () runs the function when assigned , work arounds -


अगर मैं निम्नलिखित करता हूं:

  image [i] .onmousedown = whatever;   

यह पूरी तरह से ठीक काम करेगा और क्लिक पर जो कुछ भी () फ़ंक्शन चला जाएगा। हालांकि अगर मैं निम्नलिखित करता हूं:

  छवि [i]। Concurrently = जो (नाम, क्या, कब, कहाँ, कैसे);   

यह संपत्ति को निर्दिष्ट करते समय यह फ़ंक्शन चलाएगा मान लें कि मैं 30 छवियों को बनाऊं और उन सभी परमाणु कार्यों को देना चाहता हूं, यह उस फ़ंक्शन को लोड पर 30 गुणा चलाएगा, क्योंकि मैंने जो कुछ भी बाद में जोड़ा है लेकिन मैं अपने गुणों को मेरे और अन्य संपत्तियों को किस प्रकार आवंटित कर सकता हूँ?

फ़ंक्शन चलाने का एकमात्र तरीका क्या कार्य करता है? तो ऐसा कुछ करें

  छवि [i]। समारोह जो कुछ भी () (और जो भी हो (यह, नाम, क्या, कब, कहाँ, कैसे); }   

मुझे ऐसा लगता है कि ' यह ' के लिए एक नया मान देना होगा? आप लोग क्या सुझाव देंगे या कृपया मुझे बताएं कि आपके पास इसे करने का बेहतर तरीका है। किसी भी मदद के लिए अग्रिम धन्यवाद

आप बाइबंड करने के लिए ecmaScript5 फ़ंक्शन का उपयोग कर सकते हैं संदर्भ और तर्कों को सेट कर दिया जाता है।

  छवि [i]। तमाम स्थान = जो कुछ भी हो। (यह, नाम, क्या, कब, कहाँ, कैसे);   

यह यहां वर्तमान संदर्भ होगा जहां आप ईवेंट बाध्यकारी हैं। यदि आप तत्व के संदर्भ को तब ही प्राप्त करना चाहते हैं:

  छवि [i] .onmousedown = whatever.bind (छवि [i], नाम, क्या, कब, कहाँ, कैसे);   

जैसा कि एमडीएन में बताया गया है, आप पुराने जेब के लिए अपने जेएस में इस स्क्रिप्ट को रख सकते हैं।

  if (! Function.prototype.bind) {Function। प्रोटोटाइप.बिंड = फ़ंक्शन (ओऐ) {यदि (इस का प्रकार! == "फ़ंक्शन") (आईसीएमएस्क्रिप्ट 5 आंतरिक इस्सेलबल फ़ंक्शन के लिए सबसे नज़दीकी वस्तु संभव है, नया प्रकार एरर ("फंक्शन .प्रोटोटाइप। बिंद - जो बाध्य होने की कोशिश कर रहा है कॉल करने योग्य नहीं है "); } Var aArgs = Array.prototype.slice.call (तर्क, 1), fToBind = this, fNOP = function () {}, fbound = function () {return fToBind.apply (इस उदाहरण fnop & amp; o यह? : ओ, एअर्ग.कॉकेट (अर्रे.प्रोटोटाइप.slice.call (आर्ग्यूमेंट्स))); }; FNOP.prototype = this.prototype; FBound.prototype = नया एफएनओपी (); फ़ेबाउंड लौटें; }; }    

No comments:

Post a Comment