2013-06-13 4 views
45

मुझे एक पैराग्राफ के चयनकर्ता के रूप में एक चर का उपयोग करने में समस्याएं आ रही हैं जिन पर मैं कार्रवाई करना चाहता हूं। विशेष रूप से मेरे पास कई शीर्षक तत्व हैं और पैराग्राफ की एक ही संख्या है। वांछित परिणाम यह है कि यदि मैं शीर्षक 1 पर क्लिक करता हूं तो मैं अनुच्छेद 1 पर एक कार्रवाई करता हूं। मैंने विकास उद्देश्यों के लिए एक साधारण मामला बनाया जिससे मैं एक शीर्षक पर क्लिक करता हूं तो संबंधित अनुच्छेद का पाठ रंग बदलता है। यदि मैं कड़ी मेहनत करता हूं तो यह समाधान करता है लेकिन एक चर में गुजर रहा है क्योंकि चयनकर्ता विफल रहता है।jQuery: चयनकर्ता के रूप में एक चर का उपयोग

jQuery इस प्रकार है:

jQuery(document).ready(function($){ 
     $(this).click(function(){ 

     var target=(event.target.id);// Get the id of the title on which we clicked. We will extract the number from this and use it to create a new id for the section we want to open. 
     alert(target);// checking that we are getting the right value. 
     var openaddress=target.replace(/click/gi, "section");//create the new id for the section we want to open. 
     alert('"#'+openaddress+'"');//Confirm that the correct ID has been created 
     $('"#'+openaddress+'"').css("color", "green");//get the id of the click element and set it as a variable. 
     //$("#section1").css("color", "green");//Test to confirm that hard coded selector functions correctly. 

      return false;// Suppress the action on the anchor link. 
      }); 


    }); 

चेतावनी देता है निम्न चर alert returned showing the value of the variable जो सही प्रतीत होता है और हार्ड कोडित संस्करण से मेल खाता है। मैंने एचटीएमएल छोड़ा है क्योंकि यह हार्ड कोडेड संस्करण में काम करता है, मुझे लगता है कि उस तरफ कोई समस्या नहीं है।

मैं जो भी गलत कर रहा हूं और इसे सही करने के तरीके पर किसी भी मार्गदर्शन की सराहना करता हूं।

धन्यवाद

+1

'# section1" के आस-पास के दूसरे उद्धरणों को छोड़ने का प्रयास करें, इसलिए वास्तव में jQuery को पारित स्ट्रिंग वांछित के रूप में '# section1' होगी। यदि इसका कोई औचित्य हो। बस '#' + ओपनड्रेस 'पास करने का प्रयास करें। ध्यान दें कि आपका कोड '# अनुभाग 1" में गुजरता है और आपका परीक्षण '# section1' का उपयोग करता है। –

+0

'$" में "#foo" '(" # foo ") को ** स्ट्रिंग अक्षर ** कहा जाता है और यह स्ट्रिंग * मान *' # foo' उत्पन्न करता है। स्ट्रिंग अक्षर दो उद्धरण चिह्नों (या तो डबल या एकल उद्धरण) द्वारा दर्शाए जाते हैं। यह अन्य मानों के लिए समान है: '[...]' एक सरणी को इंगित करता है, '/.../' एक regex शाब्दिक, '{...}' एक वस्तु, आदि। उन प्रतीकों पार्सर को कैसे व्याख्या करने के लिए बताते हैं चरित्र अनुक्रम। वे ** मूल्य ** नहीं हैं ** मूल्य का हिस्सा! इसलिए, jQuery को चयनकर्ता के रूप में '# foo' की अपेक्षा है, लेकिन आप मान में उद्धरण चिह्न शामिल कर रहे हैं और '# foo'' पास करते हैं, जो गलत है। –

+0

@ फ़ेलिक्सक्लिंग: सहायता के लिए धन्यवाद। मैं स्ट्रिंग शाब्दिक और jQuery द्वारा उपयोग मूल्य पर स्पष्ट नहीं था। मुझे स्पष्टीकरण की आवश्यकता थी इसलिए मेरे लिए 'डुप्लिकेट' प्रश्न उपयोगी नहीं था (लेकिन केवल मेरी अज्ञानता के कारण।) – dorich

उत्तर

119

तुम भी जटिल सोच रहे हैं। यह वास्तव में सिर्फ $('#'+openaddress) है।

संबंधित मुद्दे