2011-12-20 22 views
14

चिह्नित करें मेरे पास jquery चयन के बारे में कुछ सवाल है। मेरे मामले में, option.value के बराबर कुछ मिलान करने के लिए कैसे करें, इसके लिए selected चिह्नित करें। Online code herejquery चयन अगर विकल्प .value बराबर कुछ है, तो चयनित

दोबारा कोड दोहराएं। यह Uncaught TypeError: Object #<HTMLOptionElement> has no method 'val' का कारण बन गया, मेरी आशा के रूप में कैसे काम करें? धन्यवाद।

<script type="text/javascript"> 
$(document).ready(function(){ 
    var num = 3; 
    $("div#selection select.select option").each(function(){ 
     if((this).val()==num){ 
      $(this).attr("selected","selected");  
     } 
    }); 
}); 
</script> 
<div id="selection"> 
    <label>Label1:</label> 
    <select class="select"> 
     <option value="1">V1</option> 
     <option value="2">V2</option> 
     <option value="3">V3</option> 
    </select> 
    <label>Label2:</label> 
    <select class="select"> 
     <option value="4">U1</option> 
     <option value="5">U2</option> 
     <option value="6">U3</option> 
    </select> 
</div> 
+0

शायद यह पोस्ट आपकी मदद कर सकता है: http://stackoverflow.com/q/196684/508702 –

उत्तर

16

आपसे कोई टाइपिंग त्रुटि

के बजाय (this).val() आप $(this).val() का उपयोग करना चाहिए अपने अगर बयान में की गई। this एक HTMLObject को संदर्भित करता है, $(this) एक jQuery ऑब्जेक्ट का संदर्भ देगा। चूंकि .val() विधि jQuery ढांचे का हिस्सा है, इसलिए आप HTMLObjects पर इसका उपयोग नहीं कर सकते हैं। लेकिन मुझे यकीन है कि आप जानते थे क्योंकि यह एक छोटे टाइपो की तरह दिखता है।

यह काम करना चाहिए:

$(document).ready(function(){ 
    var num = 3; 
    $("div#selection select.select option").each(function(){ 
     if($(this).val()==num){ // EDITED THIS LINE 
      $(this).attr("selected","selected");  
     } 
    }); 
}); 

संपादित

तो यह 'नहीं करता है जब आप अपने तत्व पाया है तुम एक return false; (वेनिला छोरों के लिए break;) जोड़कर अपने पाश का अनुकूलन कर सकता है जब हम पहले से ही "कर चुके हैं" लूपिंग तत्वों को रखें।

हालांकि, आपको निकोला पेलुचेते के को अधिक कुशल और क्लीनर कोड के लिए उत्तर देना चाहिए।

0

पहली बार जहां आप this देखें, यह एक jQuery ऑब्जेक्ट नहीं है यह एक डोम ऑब्जेक्ट है और एक DOM ऑब्जेक्ट में val() विधि नहीं है। आप या तो this.value och का उपयोग करना चाहिए $(this).val() इस प्रयास करें:

$("div#selection select.select option").each(function(){ 
     if($(this).val()==num){ 
      $(this).attr("selected","selected");  
     } 
    }); 
0

आपका कोड अच्छी तरह से काम करता है। बस $ (इस) के साथ 'यह' अपडेट करें। यदि कोई अन्य चुनिंदा ड्रॉपडाउन नहीं है तो आप 'div # चयन का चयन कर सकते हैं।' नीचे की तरह

$(document).ready(function(){ 
    var num = 3; 
    $("select option").each(function(){  
     if($(this).val()==num){ 
      $(this).attr("selected","selected");  
     } 
    }); 
}); 
15

आपसे कोई टाइपिंग त्रुटि है और (के रूप में चयनित आप prop() का उपयोग करना चाहिए और न attr विकल्प सेट करना)। किसी भी मामले में तुम कर सकते हो

var num = 3; 
$("div#selection select.select option[value="+num+"]").prop("selected", true); 

यहाँ बेला http://jsfiddle.net/YRBrp/

संपादित करें - निश्चित रूप से गलती है तो क्या टिम एस ने कहा, आप $(this).val() और नहीं (this).val()

+0

मैं पूरी तरह से सहमत हूं आप, लेकिन वह उसकी त्रुटि की व्याख्या नहीं करता है। –

+0

इसके अलावा, मैंने अपनी पोस्ट संपादित की है और इस जवाब को संदर्भित किया है क्योंकि यह बहुत सेक्सी है –

+0

आपने मुझे बचाया! मैं खुद के बारे में नहीं सोच सका। +1 –

0

कोशिश नीचे

का उपयोग करना चाहिए
$("div#selection select.select").val(num); 

यदि आपका चयन बॉक्स एकाधिक चयन है, तो आप

आज़मा सकते हैं
$("div#selection select.select option").each(function(){ 
     if($(this).val()==num){ 
     $(this).attr("selected", true);  
     } 
    }); 
1

आपकी समस्या यहाँ शुरू होता है

$ ("div # चयन select.select विकल्प")।प्रत्येक (function() { अगर ((यह) .val() == संख्या) {

परिवर्तन यह

$("div#selection select.select").each(function(){ 
if($(this).val()==num){ 

और अपने सभी समस्या हल करने के लिए। आप को बदलने के लिए चाहते हो सकता है यदि आप चयन को बदलते समय हर बार स्क्रिप्ट ट्रिगर करने की सोच रहे हैं तो .each .change

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