选择菜单更改仅在第一个事件上追加对象列表
selectmenuchange appending object list only on first event
我有两个选择菜单,其中一个$('#parent')
与$('#members')
菜单中的某些选项有关(通过其HTML中的数据属性相关)。我有一个功能来限制"成员"中的选择,因为它们与父菜单中选择的选项相关。
脚本
$("#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()
我可以看到每次都选择了正确的数组,它们只是没有显示在菜单中后续更改。
我无法弄清楚这是selectmenuchange
的问题还是empty().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>
好吧,options
正在发生变化,但它并没有反映在plugin
创建的selectmenu
中。因此,其中一种方法是destroy
它并re-initialize
selectmenu
如下所示:
$('#members').html(someMembers).selectmenu('destroy').selectmenu();
DEMO
除了selectmenu('destroy')
并重新初始化选择菜单之外,您还可以使用 selectmenu('refresh')
.刷新听起来比每次都摧毁它更好。
我已经更新了Guruprasad Rao的小提琴:小提琴
相关文章:
- 追加Jquery后的Binding Click事件不起作用
- Jquery在表WITH函数中追加新行后添加单击事件
- 在函数中定位动态创建的HTML元素(用于追加事件 - 而不是点击!)jQuery
- 如何在 js / jquery 中绑定“数据追加”事件
- jquery 1.7追加后点击事件不起作用
- 单击事件不起作用后追加 - AngularJS
- 如何在单击事件中追加数据来自数据表
- jQuery - 追加/替换事件侦听器(当事件处理程序未知时)
- 事件列表器不适用于追加的项目
- jQuery 单击事件在追加新按钮时未触发
- 追加到通过调整大小事件复制内容
- 选择菜单更改仅在第一个事件上追加对象列表
- jQuery - 如何在追加的选择器上链接事件
- 将事件添加到 ajax 追加的内容
- 仅追加一次 UI 元素,避免事件传播
- 事件在追加视图中不起作用
- 追加了 JQuery 的代码不会在输入文件上触发单击事件
- 如何在jQuery中为每个点击事件追加文本x次
- 如何将onclick事件追加到li类中
- 使用jquery和onclick事件追加文本