2012-01-19 11 views
11

नीचे दिए गए कोड में मेरे पास दो jQuery चयनकर्ता हैं जो सही तरीके से काम करते हैं। क्या दूसरे के बजाय एक करने का कोई कारण है, या कोई और पसंदीदा तरीका है?jQuery का उपयोग कर बैकबोन.जेएस में, दृश्य के भीतर तत्व का चयन करने का सही तरीका क्या है?

var val1 = $("#username", this.el).val() 
var val2 = $(this.el).find("#username").val(); 

मुझे पता है कि वहाँ एक ही आईडी वाले एक से अधिक तत्वों नहीं होना चाहिए हूँ, लेकिन अगर वहाँ एक ही आईडी के साथ कई तत्व हैं, ध्यान में रखते हुए ही तत्व का चयन करने (उदाहरण देखें सबसे अच्छा तरीका क्या है उपयोगकर्ता नाम के लिए नीचे)।

<body> 
    Username: <input type="text" id="username" /><br /> 
    <br /><br /> 
    <div id="login"> 
     Username: <input type="text" id="username" /><br /> 
     <button id="loginButton">Login</button> 
    </div> 

    <script type="text/javascript"> 
     var LoginView = Backbone.View.extend({ 
      el: "#login", 
      events: { 
       "click #loginButton": "login" 
      }, 

      login: function() { 
       var val1 = $("#username", this.el).val() 
       var val2 = $(this.el).find("#username").val(); 

       console.log(val1); 
       console.log(val2); 
      } 
     }) 
     var loginView = new LoginView(); 
    </script>  
</body> 

--------------------- अद्यतन --------------------- ---

मैं जेएसफ़िल्ड उदाहरण बना देता हूं ताकि अन्य देखने के लिए एक कामकाजी उदाहरण हो। http://jsfiddle.net/BarDev/9QpKy/

उत्तर

25

संक्षिप्तता के लिए, मैं आमतौर पर Backbone-provided shortcut का उपयोग करें:

this.$('#username') 

जिसके लिए $('#username', this.el);

एक उपनाम है हालांकि, किसी भी चयन विधि आप का उपयोग काफी अच्छी तरह से काम करेगा। आपके उदाहरण में आपके द्वारा प्राप्त किए गए दो अन्य तरीके अच्छे हैं।

2

सबसे पहले मैं आपको एक पृष्ठ पर एक ही आईडी के साथ कई तत्व नहीं होने का सुझाव दूंगा। इससे बचने की कोशिश करो। एक तत्व खोजने के लिए, मुझे लगता है कि find संदर्भ को पारित करने वाले तत्व को चुनने से बेहतर है क्योंकि संदर्भ प्रदर्शन कारण के लिए अच्छा है लेकिन findcontext से तेज़ है, इसलिए यह बेहतर है और यह भी अधिक कॉम्पैक्ट और पठनीय है।

var val2 = $(this.el).find("#username").val(); 
+1

मुझे जांच नहीं है लेकिन मुझे लगता है कि आईडी द्वारा चयन करते समय संदर्भ इतना महत्वपूर्ण प्रदर्शन नहीं होता है। लेकिन यह अभी भी अन्य मामलों में एक अच्छी सलाह है – Guillaume86

+0

@ Guillaume86 - हाँ, अगर आईडी अद्वितीय हैं तो jQuery ऑब्जेक्ट में खोजने के संदर्भ को पास करने की आवश्यकता नहीं है, तो आप सीधे आईडी चयनकर्ता का उपयोग कर सकते हैं। – ShankarSangoli

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