javascript - 删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作 - jquery

标签 javascript jquery html

我有一个包含多列的 html 表格,在两列中我显示下拉列表。当用户从一个下拉列表中选择值时(选择产品1 或选择 Product2 下拉列表),我想删除在一个下拉列表中选择的选项,并且不在另一个下拉列表中显示该选项...

当表中所有可用下拉列表的类名相同时(选择产品1,选择产品2),下面的示例代码有效,但在我的例子中 下拉列表的类名对于表中的每一列都是相同的,这会破坏下面的代码。

var $combo = $(".combo");
$combo.on("change", function () {
    var select = this,
        selected = $("option:selected", this).text();

    $combo.each(function (_, el) {
        if (el !== select) {
            $("option", el).each(function (_, el) {
                var $el = $(el);
                if ($(el).text() === selected) {
                    $el.remove();
                }
            });
        }
    });
});

示例演示:http://plnkr.co/edit/VSdhVfhyIfI0rV6efrZv?p=preview

在上面的演示中,当用户从一行的一个下拉列表中选择产品“笔记本电脑”时,选项“笔记本电脑”不应显示在该行中的另一个下拉列表中...

最佳答案

查看同一行,而不是循环遍历表中的所有选择。 ALso 匹配值会更简单

$combo.on("change", function() {
  var $sel = $(this),
       val = $sel.val();

  $sel.parent().siblings().find('.combo option[value=' + val + ']').remove()

});

但请注意,您还有一个不同的问题,即如果用户更改了之前选择的选项,您将无法重新插入选项。

应考虑保留存储在变量中的所有选项的克隆,以便您可以在后续更改期间查找丢失的选项

关于javascript - 删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作 - jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53422117/

相关文章:

javascript - Highcharts:如何绘制不同箱线图的相邻散点

php - 如何检测 Firefox、Opera 和 IE 中的浏览器插件?

javascript - 从变量访问 JSON 值

javascript - Chrome 和 Firefox 之间的 flexbox/位置滚动差异

javascript - 从我的联系页面接收信息需要什么?

Javascript:Cookie、选择框和 'document.getElementById' 在 Internet Explorer 中不起作用

javascript - HTML 5/Javascript 中的本地存储问题

asp.net-mvc-3 - HTTP 请求的内容长度 > 正文大小

html - 三级十进制有序列表 CSS

jquery - Chrome 中相对定位的 div 上的绝对定位元素