我有一个包含多列的 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/