我有两个selectmenus,其中一个$('#parent')
与$('#members')
菜单(通过HTML中的数据属性相关)中的某些选项有关。我有一个功能来限制“成员”中与父菜单中选择的选项相关的选项。selectmenuchange仅在第一个事件中追加对象列表
SCRIPT
$("#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>
能不能请你太重视你的'html'? –
很难,因为这些选项是从ajax请求中初步填充的,但我添加了它的外观。 – jmk