jQuery를 사용하여 JavaScript 개체에서 선택한 항목에 옵션을 추가하는 가장 좋은 방법은 무엇입니까?

에 옵션을 추가하는 가장 좋은 방법은 무엇입니까?<select>jQuery를 사용하여 JavaScript 개체에서 추출할 수 있습니까?

플러그인이 필요 없는 것을 찾고 있습니다만, 시판되고 있는 플러그인에 대해서도 관심이 있습니다.

제가 한 일은 다음과 같습니다.

selectValues = { "1": "test 1", "2": "test 2" };
for (key in selectValues) {
if (typeof (selectValues[key] == 'string') {
$('#mySelect').append('<option value="' + key + '">' + selectValues[key] + '</option>');
} } 

깔끔하고 심플한 솔루션:

다음은 matdumsa를 정리하고 단순화한 버전입니다.

$.each(selectValues, function(key, value) {
$('#mySelect')
.append($('<option>', { value : key })
.text(value)); }); 

matdumsa로부터의 변경: (1) append() 내의 옵션에 대한 닫기 태그를 삭제하고 (2) 속성/속성을 append()의 두 번째 파라미터로 맵으로 이동했습니다.



질문에 대한 답변



jQuery 방식으로 다른 답변과 동일합니다.

$.each(selectValues, function(key, value) {
$('#mySelect')
.append($("<option></option>")

.attr("value", key)

.text(value));
}); 



var output = [];
$.each(selectValues, function(key, value) {
output.push('<option value="'+ key +'">'+ value +'</option>'); });
$('#mySelect').html(output.join('')); 

이렇게 하면 DOM을 한 번만 터치할 수 있습니다.

최신 행을 $(‘#mySelect’).html(output.join(“”))로 변환할 수 있을지 모르겠습니다.jQuery internal을 모르기 때문입니다(html() 메서드로 해석할 수도 있습니다).




이게 조금 더 빠르고 깨끗해요.

var selectValues = {
"1": "test 1",
"2": "test 2" }; var $mySelect = $('#mySelect'); // $.each(selectValues, function(key, value) {
var $option = $("<option/>", {
value: key,
text: value
});
$mySelect.append($option); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <select id="mySelect"></select>




j쿼리

var list = $("#selectList"); $.each(items, function(index, item) {
list.append(new Option(item.text, item.value)); }); 

Vanilla JavaScript

var list = document.getElementById("selectList"); for(var i in items) {
list.add(new Option(items[i].text, items[i].value)); } 



오래된 IE 버전을 지원할 필요가 없다면 컨스트럭터를 사용하는 것이 읽기 쉽고 효율적인 솔루션입니다.

$(new Option('myText', 'val')).appendTo('#mySelect'); 

기능적으로는 다음과 같으나, 보다 깔끔합니다.

$("<option></option>").attr("value", "val").text("myText")).appendTo('#mySelect');