【问题标题】:How can i disable/enable options in all dynamically created dropdowns based on the selected options如何根据所选选项禁用/启用所有动态创建的下拉列表中的选项
【发布时间】:2019-12-20 15:55:48
【问题描述】:

假设我在页面上有一个下拉菜单,当用户单击按钮以创建更多具有相同选项的下拉菜单时,我希望能够启用和禁用页面上所有下拉菜单中的选定选项。

<select>
<option value="0">Select</option>
<option value="1">John Smith</option>
<option value="2">Jane Smith</option>
<option value="3">John Doe</option>
</select>    

我知道这个 Jquery 适用于静态下拉菜单

$("select").change(function () {
    $("select option[value='" + $(this).data('index') + "']").prop('disabled', false);
    $(this).data('index', this.value);
    $("select option[value='" + this.value + "']:not([value='0'])").prop('disabled', true);
});

但它似乎不适用于动态创建的下拉菜单。只有第一个下拉列表中的选定选项在其他选项中被禁用,反之则不起作用

这是我的简化创建代码:

function createRow() {
var table = $('#addTable');

table.append('<select class="ui fluid search dropdown" ><?php foreach ($taskdescriptions as $task) : ?> <option value="<?php echo $task ?>"><?php echo str_replace("|"," ",$task);  ?></option><?php endforeach; ?></select>');
    $("select option[value='" + $(this).data('index') + "']").prop('disabled', false);
    $(this).data('index', this.value);
    $("select option[value='" + this.value + "']:not([value='0'])").prop('disabled', true);


}

我正在创建表格行,其中每一行都有一个选择下拉列表和一些其他输入

【问题讨论】:

  • 你能贴出你用来创建动态元素的代码吗?
  • 如果动态创建的下拉菜单没有触发更改事件,请参阅stackoverflow.com/questions/203198/…
  • 好的,我认为上面的链接是我的想法 - 使用“on”类型的绑定,看看它是否适合你(而不仅仅是“改变”) - 特别是 Delegated事件的优点是它们可以处理来自以后添加到文档中的后代元素的事件

标签: javascript jquery


【解决方案1】:

感谢异端猴子和 Nikki9696 解决方案是: $('#addTable').on('change', 'select', function(){}

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多