从选择框中删除项目
Posted
技术标签:
【中文标题】从选择框中删除项目【英文标题】:Removing an item from a select box 【发布时间】:2010-09-27 09:24:59 【问题描述】:如何或将项目添加到选择框中?我正在运行 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>
【问题讨论】:
【参考方案1】:删除一个选项:
$("#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>
【讨论】:
如果您需要删除一个选项并选择另一个: $('#selectBox').val('option2').find('option[value="option1"]').remove( ); 老实说,我认为通过 javascript 操作选择框的方式是有史以来最令人困惑的事情之一,即使您对选择器和 DOM 有相当好的理解。【参考方案2】:你可以用这个删除选中的项目:
$("#selectBox option:selected").remove();
如果您有一个列表而不是下拉列表,这将很有用。
【讨论】:
它正在为我删除所有内容...等等,我正在使用具有多个属性的 Select。如何从多项选择中删除它?【参考方案3】: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。
【讨论】:
@JBeckton: 回顾 4 年前写的这篇文章,我自嘲你是对的 :)【参考方案4】:删除项目
$("select#mySelect option[value='option1']").remove();
添加项目
$("#mySelect").append('<option value="option1">Option</option>');
检查选项
$('#yourSelect option[value=yourValue]').length > 0;
删除选定的选项
$('#mySelect :selected').remove();
【讨论】:
【参考方案5】:应该这样做:
$('#selectBox').empty();
【讨论】:
【参考方案6】:我发现 jQuery select box manipulation plugin 对这类事情很有用。
您可以通过索引、值或正则表达式轻松删除项目。
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(/./);
。
【讨论】:
-1 因为这可以在没有插件的情况下使用 jQuery 和基本编程来完成。 ᕀ1 为什么要重新发明***【参考方案7】:无需硬编码即可动态添加/删除值:
// 从选择中动态删除值
$("#id-select option[value='" + dynamicVal + "']").remove();
// 为选择添加动态值
$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');
【讨论】:
【参考方案8】:我发现两个页面看起来很有帮助,它是为 ASP.Net 编写的,但同样的内容应该适用:
-
How to add/remove items from a dropdown list using jQuery
jQuery selector expressions
【讨论】:
【参考方案9】:以下链接会有所帮助-
http://api.jquery.com/remove/
http://api.jquery.com/append/
【讨论】:
【参考方案10】:只是为了让任何人都能看到这一点,您还可以:
$("#selectBox option[value='option1']").hide();
和
$("#selectBox option[value='option1']").show();
【讨论】:
我认为这取决于浏览器。它可能只是禁用该特定选项。 我不推荐这种方法,因为它是特定于浏览器的。 这是一篇旧帖子,但我想对此发表评论。虽然这是一个很好的处理select选项的方法,但不推荐,因为IE不支持【参考方案11】: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>
【讨论】:
【参考方案12】:我不得不从一个选择中删除第一个选项,没有 ID,只有一个类,所以我成功地使用了这个代码:
$('select.validation').find('option:first').remove();
【讨论】:
【参考方案13】:
$("#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>
【讨论】:
【参考方案14】:我只是想建议另一种添加option
的方法。
除了将value
和text
设置为字符串之外,还可以这样做:
var option = $('<option/>')
.val('option5')
.text('option5');
$('#selectBox').append(option);
在动态添加选项的值和文本时,这是一种不易出错的解决方案。
【讨论】:
我不是反对者,但您似乎回答了 OP 如何添加选项,而不是如何删除选项。【参考方案15】:如果有人需要删除选择中的 ALL 选项,我做了一个小功能。
希望对你有用
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");
【讨论】:
结果不等于$('#contenedor_modelos').empty();
吗?不过很高兴看到一些行动:)以上是关于从选择框中删除项目的主要内容,如果未能解决你的问题,请参考以下文章