2011-01-27 10 views
15

मैं निम्नलिखित कोड के साथ एक गतिशील jQuery चयनकर्ता का निर्माण करने की कोशिश कर रहा हूँ:वैरिएबल का उपयोग

var section_id = "{segment_3}"; 
var num_children = $('#'+ section_id + ' ul').children().size(); 

जहां segment_3 एक मूल्य मैं सफलतापूर्वक यूआरएल स्ट्रिंग, से पुनः प्राप्त है जो, उदाहरण के लिए, हो सकता है "section_one" का मान वापस करें

लेकिन परिवर्तनीय num_children बनाने का प्रयास करते समय, यह संदर्भ काम नहीं करता है। गतिशील संदर्भ बनाने के लिए मैं कोड कैसे बना सकता हूं? किसी भी मदद के लिए धन्यवाद।

+4

क्या तत्व की आईडी वास्तव में '{segment_3}' है? घुंघराले ब्रेसिज़ इसे अमान्य बनाते हैं। – lonesomeday

+0

जब आप इसका उपयोग कर रहे हैं तो आपके सेक्शन_आईडी var में वास्तव में घुंघराले ब्रेसिज़ नहीं हैं? इससे कोई समस्या होगी। – CalebHC

+0

जावास्क्रिप्ट निष्पादन से पहले {segment_3} वैरिएबल को फ्रेमवर्क (code_igniter) द्वारा पूर्व-विश्लेषण किया गया है - इसलिए यह वास्तव में केवल एक स्ट्रिंग है। मैंने पाया कि यह वास्तव में ऐसा करने के लिए काम करता है: var num_children = $ ('# {segment_3} ul')। लेकिन फिर भी, मानते हुए कि मैं बस कुछ कह रहा था: var section_id = 'section_1', क्या उपरोक्त कोड मान्य होगा? क्या आप इस तरह का चयनकर्ता बना सकते हैं? – mheavers

उत्तर

35

मान लिया जाये कि वर SECTION_ID = 'section_1' इस:

$('#'+ section_id + ' ul').children().size(); 

आप

$('#section_1 ul').children().size(); 

दे देंगे और हाँ, इस रूप में अच्छी तरह वैध है। यह आपको # अनुभाग_1 तत्व के भीतर सभी उल तत्व देगा (इससे कोई फर्क नहीं पड़ता कि वे कितने गहरे होंगे)। शायद आपको तत्वों की सरणी मिल जाएगी और कॉलिंग .children() भी ठीक है। यह सब काम करना चाहिए।

+0

उद्धरण के साथ संघर्ष के घंटे और घंटे आपके उत्तर में समाप्त होते हैं। धन्यवाद! – viery365

0

प्रयास करें

var num_children = $('#'+ section_id.substring(1, section_id.length-2) + ' ul').children().size(); 
0

टिप्पणियाँ ऊपर सही हैं ... एक आईडी चयनकर्ता के लिए बुनियादी वाक्यविन्यास $ (# Itemid) है ...

वर myValue = $ ("# new_grouping _" + i) .val(); // इस

1

काम करता है ऊपर की अनुमति दी मूल्य वर्ण (नामकरण नियम) के बारे में 4.01 आईडी गुण बहुत ही सीमित है HTML में:

आईडी गुण एक पत्र AZ या az, जिसके बाद से आरंभ होने चाहिए: पत्र (ए-जेए-जेड), अंक (0-9), हाइफ़न ("-"), अंडरस्कोर ("_"), कोलन (":"), और अवधि ("।") और सभी मान हैं केस-संवेदी।

* ध्यान दें: दूसरी ओर: (छद्म वर्ग .something) *

मेरे अनुभव में मैं उन्हें बहुत स्पष्ट करता है और वे CSS चयनकर्ताओं से बाहर खड़े केवल छोटे वर्ण और _ आईडी के लिए उपयोग कर पाया एचटीएमएल 5 में आप आईडी के मूल्य के रूप में लगभग कुछ भी हो सकता है।

रेफरी: http://www.w3.org/TR/html5/elements.html#the-id-attribute

तो अपने चयनकर्ता बिल्कुल ठीक (वैध) एचटीएमएल 5 चश्मा के साथ, लेकिन उसे इसका jQuery के साथ काम करने के लिए है कि आप सभी पात्रों चयनकर्ता पार्सर विशेष अर्थ के साथ उपयोग करता है से बचने के लिए की जरूरत है। और क्योंकि इसका जावास्क्रिप्ट कोड है, आपको दो \\ का उपयोग करना होगा (पहला वाला दूसरा भाग निकलता है)। JQuery यदि आप ऐसा करने के लिए एक रास्ता प्रदान नहीं करता है, तो नीचे दिए गए कोड मैं का उपयोग कर रहा है:

उदाहरण:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>jQuery HTML5 Selector Escaping</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript"> 

    // Ths is the list of special characters used by jquery selector parser 
    // !"#$%&'()*+,./:;[email protected][\]^`{|}~ 
    $(document).ready(function() { 
     var selector = '{my_%real{ly:s#tra`n[ge_i]d_n^@a|me>}'; 
     selector = selector.replace(/([ {}\|`\^@\?%#;&,.+*~\':"!^$[\]()=>|\/])/g,'\\$1'); 
     var object = $('#'+selector+' ul').children().size(); 
     alert('UL has '+ object +' LIs'); 
    }); 

    </script> 
</head> 
<body> 
    <div id="{my_%real{ly:s#tra`n[ge_i]d_n^@a|me>}"> 
     <ul> 
      <li>Sehr</li> 
      <li>Gut</li> 
      <li>Doh</li> 
     </ul> 
    </div> 
</body> 
</html> 

मैं कोड, कुछ गलतियों जहां तय संपादित। :)

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