Javascript jQuery根据下拉列表中的选择将行移动到另一个表

Javascript jQuery根据下拉列表中的选择将行移动到另一个表,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含多个表的页面(每个“活动类型”一个表)。它们的ID是“活动类型”。每个表中的每一行都有一个带有下拉列表的单元格,允许用户选择要将该行移动到的新表的“活动类型” 下面的js代码确实将一行从其原始表移动到下拉菜单中所选“活动类型”的表中。但是,移动行后,下拉列表中的选定值仍保留为旧的“活动类型”。如何将下拉列表的值设置为该行现在所属的新“活动类型” $('.override-activity').change(function () { // get selected Activ

我有一个包含多个表的页面(每个“活动类型”一个表)。它们的ID是“活动类型”。每个表中的每一行都有一个带有下拉列表的单元格,允许用户选择要将该行移动到的新表的“活动类型”

下面的js代码确实将一行从其原始表移动到下拉菜单中所选“活动类型”的表中。但是,移动行后,下拉列表中的选定值仍保留为旧的“活动类型”。如何将下拉列表的值设置为该行现在所属的新“活动类型”

$('.override-activity').change(function () {
    // get selected Activity Type
    var activityType = $("option:selected", this).text().replace(/\s+/g, '');

    // get selected row
    var tr = $(this).closest("tr").remove().clone();

    // insert selected row into new Activity Type table
    $("#" + activityType).find("table").append(tr);
});

您可以在克隆
tr
之后和附加之前执行类似操作吗。
tr.find('.override activity').val(activityType)
您可以在克隆
tr之后和附加它之前执行类似操作吗。

tr.find('.override activity').val(activityType)

之所以发生这种情况,是因为select上的“更改”事件从未完成,因为您正在从DOM中删除它

你可以做两件事:

  • 使用“选择”的“启用模糊”
  • 在附加TR之前,可以将select的值设置为:

    $(document).on('change', '.override-activity', function () {
        // get selected Activity Type
        var activityType = $("option:selected", this).text().replace(/\s+/g, '');
    
        // Get the original selected value
        var selected = $(this).val();
    
        // get selected row
        var tr = $(this).closest("tr").remove().clone();
    
        // Reset the value
        $('.override-activity', tr).val(selected);
    
        // insert selected row into new Activity Type table
        $("#" + activityType).find("table").append(tr);
    });    
    

  • 之所以发生这种情况,是因为select上的“更改”事件从未完成,因为您正在从DOM中删除它

    你可以做两件事:

  • 使用“选择”的“启用模糊”
  • 在附加TR之前,可以将select的值设置为:

    $(document).on('change', '.override-activity', function () {
        // get selected Activity Type
        var activityType = $("option:selected", this).text().replace(/\s+/g, '');
    
        // Get the original selected value
        var selected = $(this).val();
    
        // get selected row
        var tr = $(this).closest("tr").remove().clone();
    
        // Reset the value
        $('.override-activity', tr).val(selected);
    
        // insert selected row into new Activity Type table
        $("#" + activityType).find("table").append(tr);
    });    
    

  • 谢谢,这个有用。但是,一旦行移动到新表,并且在下拉列表中重新选择了正确的活动类型,如果现在尝试选择其他选项,则不会发生任何事情。这是因为DOM现在处于某种“分离”状态吗?我可以继续移动行吗?Exactyl,我已经更改了我的答案,以建议更好的事件绑定方法。谢谢,这很有效。但是,一旦行移动到新表,并且在下拉列表中重新选择了正确的活动类型,如果现在尝试选择其他选项,则不会发生任何事情。这是因为DOM现在处于某种“分离”状态吗?我可以继续移动行吗?Exactyl,我已经更改了我的答案,以建议更好的事件绑定方法。