Friday, 15 March 2013

javascript - Cannot get onclick function to run from within jQuery Ajax success function -


मेरे पास निम्न कोड है:

  & lt; script & gt; $ ( 'दस्तावेज़') तैयार (function () {$ ( '# बटन') पर क्लिक करें (समारोह () {var सड़क = document.getElementById ( "सड़क") मूल्य, $ .ajax ({डेटाप्रकार:।।। "Json ", यूआरएल:" {{url}} & amp; {{qstring}} ", डेटा: {सड़क: सड़क}, crossdomain: सच है, सफलता: समारोह (प्रतिक्रिया) {समारोह myfunction () {चेतावनी (" myfunction "); } $ ( '# data_box') एचटीएमएल ( '& lt; h3 & gt; एक मिलान सड़क पर & lt उठाओ; / h3 & gt;');। $ .प्रत्येक (प्रतिक्रिया, समारोह (कुंजी, मूल्य) {var स्ट्रिंग = स्ट्रिंग (मूल्य); $ ( '#data_box') संलग्न ( "& lt; a href = '#' onlick = 'myfunction ();' & gt;" + value.full_street_name + "& lt; / a & gt; पता श्रेणी:"। + value.min_address + "- "+ Value.max_address +" & lt; / br & gt; ");});}});});}); & Lt; / स्क्रिप्ट & gt;   

... और एक div अनुभाग जहां डेटा प्रस्तुत किया जाएगा:

  & lt; div id = 'data_box' & gt; & Lt; / div & gt;   

रूप में एक बटन ( '#button')। क्लिक समारोह है, जो एक यूआरएल के लिए अनुरोध भेजता से चलाता है,, json डेटा वापस लाता है और "data_box में हाइपरलिंक के रूप में यह प्रस्तुत करता है इसके बाद, मैं क्या करना चाहता हूं, जब हाइपरलिंक पर क्लिक किया जाता है, मैं इसे फ़ंक्शन ट्रिगर करना चाहता हूं। मुझे उस लिंक पर एक ऑनक्लिक मिला है जो "myfunction ()" को कॉल करता है लेकिन यह कुछ भी नहीं करता। फ़ंक्शन भी हैं लेकिन कुछ भी काम नहीं कर रहा है.मैंने jQuery के बाहर सहित विभिन्न स्थानों में अपने फ़ंक्शन फ़ंक्शन को रखने का भी प्रयास किया, लेकिन यह भी काम नहीं करता।

और यह वह जगह है जहां आप स्कॉपिंग के बारे में सीखते हैं। आपने सफलता संभालडर के अंदर myfunction को परिभाषित किया है, इसलिए इसे केवल सफलता हैंडलर के अंदर से ही कहा जा सकता है। हालांकि, आपका & lt; a href = "..." & gt; विंडो क्षेत्र में रहता है (क्योंकि सफलता के हैंडलर में यह सिर्फ एक अर्थहीन पाठ स्ट्रिंग है, और अनुलग्नक कॉल एक वास्तविक एच में बदल जाती है टीएमएल तत्व जिसका केवल विंडो क्षेत्र तक पहुंच है), जो आपके myFunction फ़ंक्शन के बारे में नहीं जानता है, इसलिए अब आप ऐसे फ़ंक्शन को कॉल करने का प्रयास कर रहे हैं जो मौजूद नहीं है ।

जावास्क्रिप्ट में, सब कुछ स्कॉप्ड (यानी, "चीज़ों में दिखाई देता है") फ़ंक्शन में होते हैं। वेरिएबल्स जिसे var ... फ़ंक्शन के अंदर घोषित किया जाता है एक्स डॉन उस फ़ंक्शन एक्स के बाहर मौजूद नहीं है, और किसी फ़ंक्शन के अंदर परिभाषित फ़ंक्शन एक्स उस फ़ंक्शन के बाहर मौजूद नहीं है।

इस मामले में, आप ऐसा करना चाहते हैं, इसके बदले (ध्यान दें कि value < / Code> पहले से ही एक स्ट्रिंग है, जिसका उपयोग var स्ट्रिंग = स्ट्रिंग (मान) कोई मतलब नहीं है):

  var newElement = $ ("& lt; a href = ' # '& Gt; "+ ... +" & lt; / a & gt; ...: "+ ... +" & lt; / br & gt; "); newElement.click (myfunction); $ ( '# Data_box') संलग्न (newElement)।   

आप को छोड़कर, क्योंकि आप & lt; a href = "#" & gt; का उपयोग कर रहे हैं, और मैं 100% सुनिश्चित नहीं कर रहा हूं अपने पृष्ठ के शीर्ष पर एक लिंक सेट अप करने के लिए: & lt; a & gt; का प्रयोग न करें जब आप इसका मतलब नहीं

क्या वास्तव में चाहते हैं, यह है:

  वर newElement = $ ( "& lt; div & gt; & lt; अवधि & gt;" + ... + "से & lt; / span & gt; ...: "+ ... +" & lt; / div & gt; "); । NewElement.find ( "काल") पर क्लिक करें (myfunction); $ ( '# Data_box') संलग्न (newElement)।   

और हाँ, उसमें & lt; br & gt; अब और नहीं है ब्रेक कोड का उपयोग न करें, सीएसएस का उपयोग करें।

No comments:

Post a Comment