답변:
empty
방법 을 사용하여 기존 옵션을 제거한 다음 새 옵션을 추가 할 수 있습니다.
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").empty().append(option);
객체에 새로운 옵션이있는 경우 다음을 수행 할 수 있습니다.
var newOptions = {"Option 1": "value1",
"Option 2": "value2",
"Option 3": "value3"
};
var $el = $("#selectId");
$el.empty(); // remove old options
$.each(newOptions, function(key,value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
편집 : 첫 번째 옵션을 제외한 모든 옵션을 제거하려면 :gt
선택기를 사용하여 option
인덱스가 0보다 큰 모든 요소 를 가져올 수 remove
있습니다.
$('#selectId option:gt(0)').remove(); // remove all options, but not the first
$el.append($('<option/>', { value: value, text: key }));
CMS의 뛰어난 답변을 빠른 jQuery 확장에 던져 넣었습니다.
(function($, window) {
$.fn.replaceOptions = function(options) {
var self, $option;
this.empty();
self = this;
$.each(options, function(index, option) {
$option = $("<option></option>")
.attr("value", option.value)
.text(option.text);
self.append($option);
});
};
})(jQuery, window);
"텍스트"및 "값"키를 포함하는 객체 배열이 필요합니다. 따라서 사용법은 다음과 같습니다.
var options = [
{text: "one", value: 1},
{text: "two", value: 2}
];
$("#foo").replaceOptions(options);
$('#comboBx').append($("<option></option>").attr("value",key).text(value));
여기서 comboBx는 콤보 상자 ID입니다.
또는 기존의 innerHTML에 문자열로 옵션을 추가 한 다음 select innerHTML에 할당 할 수 있습니다.
편집하다
첫 번째 옵션을 유지하고 다른 모든 옵션을 제거 해야하는 경우 사용할 수 있습니다
var firstOption = $("#cmb1 option:first-child");
$("#cmb1").empty().append(firstOption);
이상한 이유로이 부분
$el.empty(); // remove old options
CMS 솔루션에서 나에게 효과가 없었으므로 대신 이것을 사용했습니다.
el.html(' ');
그리고 그것은 작동합니다. 따라서 내 작업 코드는 이제 다음과 같습니다.
var newOptions = {
"Option 1":"option-1",
"Option 2":"option-2"
};
var $el = $('.selectClass');
$el.html(' ');
$.each(newOptions, function(key, value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
예를 들어 html 코드에 다음 코드가 포함 된 경우 :
<select id="selectId"><option>Test1</option><option>Test2</option></select>
선택 항목 내에서 옵션 목록을 변경하려면 다음 코드를 사용하십시오. 때 이름이 이름을 선택 selectId을 .
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").html(option);
위의 예제에서 하나의 새 옵션으로 이전 옵션 목록을 변경합니다 .
손으로 일하는 오래된 학교는 항상 나에게 좋았습니다.
선택을 청소하고 첫 번째 옵션을 그대로 두십시오.
$('#your_select_id').find('option').remove()
.end().append('<option value="0">Selec...</option>')
.val('whatever');
데이터가 Json 또는 그 밖의 다른 곳에서 온 경우 (데이터 연결)
var JSONObject = JSON.parse(data);
newOptionsSelect = '';
for (var key in JSONObject) {
if (JSONObject.hasOwnProperty(key)) {
var newOptionsSelect = newOptionsSelect + '<option value="'+JSONObject[key]["value"]+'">'+JSONObject[key]["text"]+'</option>';
}
}
$('#your_select_id').append( newOptionsSelect );
내 Json Objetc :
[{"value":1,"text":"Text 1"},{"value":2,"text":"Text 2"},{"value":3,"text":"Text 3"}]
이 솔루션은 Ajax 작업에 이상적이며 데이터베이스에서 Json으로 응답합니다.
<select>
지속적으로 업데이트 하고 이전 값을 저장 해야하는 경우 :
var newOptions = {
'Option 1':'value-1',
'Option 2':'value-2'
};
var $el = $('#select');
var prevValue = $el.val();
$el.empty();
$.each(newOptions, function(key, value) {
$el.append($('<option></option>').attr('value', value).text(key));
if (value === prevValue){
$el.val(value);
}
});
$el.trigger('change');