使用onchange删除select元素中出现的其他值
Using onchange to delete other occurrences of the value in the select element
所以我做了几个尝试,我觉得我很接近,但找不到正确的ajax。选择元素是在点击按钮时动态生成的,它们有相同的选项,但是我想要发生的是,一旦你选择了一个选项,该选项的所有其他出现都从选择元素中删除,只留下你选择的那个。
这个只是从每个select元素中删除类'theClass',包括你改变的那个。
function removeOptions(optionValue) {
$('.theClass option[value='+optionValue+']').remove();
}
我最初尝试使用。each()函数,但无法正确调用'this'。
function removeOptions(optionValue) {
$( ".theClass").each( function () {
$(this + 'option[value='+optionValue+']').remove();
}
}
感谢您的帮助
您可以使用。not()来过滤您想要保留的内容,如下所示。
$(document).on("change", "select", function() {
var val = $(this).val();
$(this).find("option[value='" + val + "']:not(:selected)").remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
编辑:根据您的评论,以下将工作。
$(document).on("change", "select", removeOptions);
function removeOptions() {
var val = $(this).val();
$("select").not(this).find("option[value='" + val + "']").remove();
}
您可以尝试向目标select
添加一个临时类或自定义属性来实现您的目标。
<select class="theClass" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select class="theClass" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select class="theClass" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
$(function() {
$("body").on("change", ".theClass", function() {
$(this).addClass("selected");
$(".theClass:not(.selected)>option[value=" + $(this).val() + "]").remove();
$(this).removeClass("selected");
});
});
这是一个JSFiddle
编辑:改变了onchange
事件即使在动态创建的select
s上也会被触发
相关文章:
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 除修剪外的其他功能
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Array.length似乎不起作用;console.log则显示其他情况
- 如何消除代码中的未定义和其他问题
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- Jquery未定义函数正在停止其他操作
- 根据其他onchange函数来选择在onchange中运行哪个函数
- Dropdownlist Onchange显示其他Dropdownlist
- 从onchange事件处理程序中提取变量以供其他函数使用
- JavaScript的onchange事件won't触发,如果select选项从其他方法改变
- 当来自其他函数的更改时,Onchange事件不会触发
- 创建表单以根据从onchange from下拉框中选择的内容创建其他输入字段
- 使用onchange删除select元素中出现的其他值