Javascript 删除多个选择选项并替换为新选项

Javascript 删除多个选择选项并替换为新选项,javascript,jquery,multi-select,Javascript,Jquery,Multi Select,我有一个选择标记,如: <span id="reportProjectSelector"> <span>Reporting Project:</span> <select id="reportProjectDropdown" onChange="loadChartWithData();" multiple="multiple"></select> </span> 这里我有多个其他下拉列表链,它们是“repo

我有一个选择标记,如:

<span id="reportProjectSelector">
    <span>Reporting Project:</span>
    <select id="reportProjectDropdown" onChange="loadChartWithData();" multiple="multiple"></select>
</span>
这里我有多个其他下拉列表链,它们是“reportProjectDropdown”的父级。为了简单起见,我们只考虑一个项目。因此,现在我们有了“项目”,一旦更改,就会触发“报告项目”过滤器。当前,Reporting project筛选器不会更改和替换新值(基本为空或无值),这些值会被下拉列表中类似“no Reporting project”的值替换

我尝试删除以前的值,但没有成功。这是我期待的函数,它将完成这项工作

function setDependentProjects (data, widgetId) {
    $('#reportProjectDropdown').find('option').remove().end();

    if(jQuery.isEmptyObject(data)) {
        let newOption = new Option("No Projects", 0, true, true);
        $('#reportProjectDropdown').append(newOption);
    } else {
        let selected = true;
        for(let key in data) {
            selected = "${defaultDependentProject}" == data[key];
            let newOption = new Option(data[key], key, selected, selected);
            $('#reportProjectDropdown').append(newOption);
            selected = false;
        }
    }

    loadChartWithData_${widgetId}(); //renders data as per the previous filters
}

是否丢失了某些内容或删除了不正确的元素?

每次更改后,都需要刷新jQuery multiselect实例。您可以使用$'reportProjectDropdown'.multiSelect'refresh'


另请参阅文档:

从何处调用setDependentProjects?你能设置吗?我得到“未捕获的TypeError:$..multiSelect不是一个函数”,不知道为什么。我已经在使用multiselect功能。我有一个默认的内置容器,它有引导和多选功能libs@Einstein_AB看起来你没有使用multiselect图书馆。您使用的是什么框架?multiselect不是本机jQuery函数。@Niklas.E。这不是HTML标记的默认多选功能吗。我刚刚添加了属性'multiple'和包含'Select All option'@Einstein_AB的函数,但您使用的是$..multiselect。。。在你的问题中。jQuery的这个方法不是由jQuery本身添加的。它是由jQuery的扩展/a插件添加的。是什么插件?您正在使用哪些jQuery插件?它不是loudev.com上的插件,否则不会出现错误。jQuery.multiselect.js是lib。
function setDependentProjects (data, widgetId) {
    $('#reportProjectDropdown').find('option').remove().end();

    if(jQuery.isEmptyObject(data)) {
        let newOption = new Option("No Projects", 0, true, true);
        $('#reportProjectDropdown').append(newOption);
    } else {
        let selected = true;
        for(let key in data) {
            selected = "${defaultDependentProject}" == data[key];
            let newOption = new Option(data[key], key, selected, selected);
            $('#reportProjectDropdown').append(newOption);
            selected = false;
        }
    }

    loadChartWithData_${widgetId}(); //renders data as per the previous filters
}