javascript - selectmenuchange 仅在第一个事件上附加对象列表

标签 javascript jquery jquery-ui-selectmenu

我有两个选择菜单,其中一个 $('#parent')$('#members') 菜单中的某些选项相关(通过HTML 中的 data 属性)。我有一个功能来限制“成员”中的选项,这些选项与父菜单中选择的选项相关。

脚本

$("#parent").selectmenu();
$("#members").selectmenu();

var allMembers = $('#members option'); // keep object list of all of the options for the select menu

$("#parent").on("selectmenuchange", function() {
    var someMembers = [];
    var id = $('#parent option:selected').data('id');
    allMembers.each(function() {
        if ($(this).data('parent-id') == id) {
        someMembers.push($(this))
        }
    });
    $('#members').empty().append(someMembers);
});

目前,这有效,但仅适用于第一个 selectmenuchange 事件 - 这很奇怪,因为在函数中重新创建数组时使用 console.log()我可以看到每次都选择了正确的选项,只是在后续更改时不会显示在菜单中。

我无法确定这是否是 selectmenuchangeempty().append() 的问题

HTML

<select name="members" id="members">
    <option data-id="101" data-parent-id="1">Name1</option>
    <option data-id="102" data-parent-id="1">Name2</option>
    <option data-id="103" data-parent-id="1">Name3</option>
    <option data-id="104" data-parent-id="2">Name4</option>
    <option data-id="105" data-parent-id="2">Name5</option>
    <option data-id="106" data-parent-id="3">Name6</option>
    <option data-id="107" data-parent-id="3">Name7</option>
</select>

<select name="parent" id="parent">
    <option data-id="1">Parent1</option>
    <option data-id="2">Parent2</option>
    <option data-id="3">Parent3</option>
</select>

最佳答案

嗯,选项正在更改,但它没有反射(reflect)在插件创建的selectmenu中。所以方法之一就是你 destroy 它并重新初始化selectmenu如下:

$('#members').html(someMembers).selectmenu('destroy').selectmenu();

<强> DEMO

关于javascript - selectmenuchange 仅在第一个事件上附加对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35772669/

相关文章:

javascript - Angular2 - 登录后重定向

javascript - 部分 View 无法正常工作

jQuery - 在 Unslider 的每个 <li> 上运行函数

javascript - 全屏 javascript 中的 Scroll-Jacking;定义滚动阈值

jquery - 如何使用 Jquery Sortable 将选中的复选框排序到顶部?

jquery-ui:如何在选择菜单项(选项)中设置类名?

javascript - 语义 ui 的 `gulp build` 给出错误 'ENOENT: no such file or directory'

javascript - Sheets JavaScript API 未捕获错误

javascript - 在调用函数的选择上添加选择菜单

android - 如何在 jQueryUI Selectmenu 中触发移动设备上的 native 移动选择器轮