jQuery

2010-11-27 7 views
5

का उपयोग कर वास्तविक विकल्प के लिए चयनित तत्व पर चयनित विशेषता सेट करना मैं jQuery में विकल्प तत्वों के साथ एक चयन सूची उत्पन्न कर रहा हूं। सरलीकृत यह इस तरह दिखता है:jQuery

var sel = $("<select>"); 
$.each(data, function(i, v){ 
    $("<option>").attr({ "value": i }).html(v).appendTo(sel); 
}); 

तब मुझे एक विकल्प चुनना है। आम तौर पर मैं कुछ ऐसा करूंगा:

$(sel).val(1); 

लेकिन फिर विकल्प में चयनित विशेषता मौजूद नहीं है।

$(sel).html() की तरह कुछ देता है:

<option value="1">1</option> 
<option value="2">2</option> 

और इस मेरी अपेक्षा है:

$.each(data, function(i, v){ 
    var attrs = { "value": i }; 
    if(i == 1){ 
     attrs.selected = "selected"; 
    } 
    $("<option>").attr(attrs).html(v).appendTo(sel); 
}); 
:

<option value="1" selected="selected">1</option> 
<option value="2">2</option> 

मैं इस दृष्टिकोण (.val का उपयोग कर के रूप में एक ही परिणाम()) की कोशिश की

लेकिन काम करने का एकमात्र तरीका यह है:

$.each(data, function(i, v){ 
    var el = "<option>"; 
    if(i == 1){ 
     el = '<option selected="selected"></option>'; 
    } 
    $(el).attr({ "value": i }).html(v).appendTo(sel); 
}); 

क्या कोई अन्य या बेहतर तरीका है?

उत्तर

7

आप native setAttribute() method का उपयोग कर सकते हैं। मेरा मानना ​​है कि jQuery गुणों और गुणों के बीच भेद को जोड़ता है।

यह हो जाता है <option> आप <select> तत्व के options collection से अपने सूचकांक से चाहते हैं, और विशेषता सेट:

sel[0].options[1].setAttribute('selected','selected'); 

या यह पहले मान सेट करने के jQuery का उपयोग करती है, तो वापस चला जाता है और का उपयोग कर सही विकल्प हो जाता है native selectedIndex property

sel.val(1); 
sel[0].options[sel[0].selectedIndex].setAttribute('selected','selected'); 

संपादित करें: विषय एक छोटे से बंद है, लेकिन आप <option> तत्वों थोड़ा अलग तरह से इस तरह बना सकते हैं:

$("<option>",{ 
    value: i, 
    html: v 
}).appendTo(sel); 

jQuery 1.4 के बाद से, आप मूल्यों का एक संग्रह भेज सकते हैं आप एक नए तत्व के लिए सेट करना चाहते हैं।

+1

+1 - http://jsfiddle.net/QFFeF/1/ – karim79

+1

चयनित होने पर jQuery स्रोत और attr इंटरसेप्ट की जांच की गई है और चयनित इंडेक्स का भी उपयोग करता है। उत्तर के लिए धन्यवाद - भूलना आसान है कि jQuery से पहले एक समय था :) – sunn0