从选择框中删除项目

如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更容易。下面是一个示例选择框。

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>
440647 次浏览

我发现有两页看起来很有用,它是为ASP编写的。Net,但同样的东西应该适用:

  1. 如何使用jQuery从下拉列表中添加/删除项目
  2. jQuery选择器表达式

删除一个选项:

$("#selectBox option[value='option1']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

添加一个选项:

$("#selectBox").append('<option value="option5">option5</option>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

我发现jQuery 选择框操作插件对于这种类型的事情很有用。

您可以轻松地按索引、值或正则表达式删除项。

removeOption(index/value/regex/array[, selectedOnly])


Remove an option by
- index: $("#myselect2").removeOption(0);
- value: $("#myselect").removeOption("Value");
- regular expression: $("#myselect").removeOption(/^val/i);
- array $("#myselect").removeOption(["myselect_1", "myselect_2"]);

要删除所有选项,可以执行$("#myselect").removeOption(/./);

window.onload = function ()
{
var select = document.getElementById('selectBox');
var delButton = document.getElementById('delete');


function remove()
{
value = select.selectedIndex;
select.removeChild(select[value]);
}


delButton.onclick = remove;
}

要添加项目,我将创建第二个选择框,并:

var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');


function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}


addSelect.onclick = add;

但不是jQuery。

你可以这样删除选定的项目:

$("#selectBox option:selected").remove();

如果你有一个列表而不是下拉列表,这是很有用的。

这应该做到:

$('#selectBox').empty();

移除一个项目

$("select#mySelect option[value='option1']").remove();

添加项目

$("#mySelect").append('<option value="option1">Option</option>');

检查一个选项

$('#yourSelect option[value=yourValue]').length > 0;

删除选定的选项

$('#mySelect :selected').remove();

为了方便大家看,你还可以:

$("#selectBox option[value='option1']").hide();

而且

$("#selectBox option[value='option1']").show();

动态添加/删除值,无需硬代码:

//从select中动态删除值

$("#id-select option[value='" + dynamicVal + "']").remove();

//添加动态值

$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');

我必须从一个选择中删除第一个选项,没有ID,只有一个类,所以我成功地使用了这段代码:

$('select.validation').find('option:first').remove();
我只是想建议另一种方法来添加option。 除了将valuetext设置为字符串外,还可以这样做:

var option = $('<option/>')
.val('option5')
.text('option5');


$('#selectBox').append(option);

在动态添加选项的值和文本时,这是一个较不容易出错的解决方案。

JavaScript

.
function removeOptionsByValue(selectBox, value)
{
for (var i = selectBox.length - 1; i >= 0; --i) {
if (selectBox[i].value == value) {
selectBox.remove(i);
}
}
}


function addOption(selectBox, text, value, selected)
{
selectBox.add(new Option(text, value || '', false, selected || false));
}


var selectBox = document.getElementById('selectBox');


removeOptionsByValue(selectBox, 'option3');
addOption(selectBox, 'option5', 'option5', true);
<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

jQuery

.
jQuery(function($) {
$.fn.extend({
remove_options: function(value) {
return this.each(function() {
$('> option', this)
.filter(function() {
return this.value == value;
})
.remove();
});
},
add_option: function(text, value, selected) {
return this.each(function() {
$(this).append(new Option(text, value || '', false, selected || false));
});
}
});
});


jQuery(function($) {
$('#selectBox')
.remove_options('option3')
.add_option('option5', 'option5', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

如果有人需要在select中删除所有选项,我做了一个小函数。

我希望它对你有用

var removeAllOptionsSelect = function(element_class_or_id){
var element = $(element_class_or_id+" option");
$.each(element,function(i,v){
value = v.value;
$(element_class_or_id+" option[value="+value+"]").remove();
})
}

只需要奔跑

removeAllOptionsSelect("#contenedor_modelos");




$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');
 when you want to totally remove and add option from select box then you can use this code


<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

 $("#selectBox option[value='option1']").hide();
$("#selectBox option[value='option1']").show();
sometime we need to hide and show option from select box , but not remove then you can use this code




<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();
sometime need to remove selected option from select box then


<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

('#selectBox').empty();
when you need to remove all option then this code


<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
when need to first option or last then this code


<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
</select>

也许其他人需要一种基本的方法来清除选择:

document.getElementById(SELECT_ID).innerHTML = "";