首页 文章

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

提问于
浏览
0

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

下面的示例代码适用于表中可用的所有下拉列表的类名相同(选择Product1,选择Product2),但在我的情况下,下拉列表的类名对于表中的每个列都是相同的,这打破了以下码 .

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

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

1 回答

  • 1

    查看同一行而不是循环遍历表中的所有选择 . 也可以更简单地匹配值

    $combo.on("change", function() {
      var $sel = $(this),
           val = $sel.val();
    
      $sel.parent().siblings().find('.combo option[value=' + val + ']').remove()
    
    });
    

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

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

相关问题