我有一个可以在http://beta.acinonyxsim.com/demo找到的演示。添加基本标记或专色标记时,您可以添加任意数量的标记。我的意图是希望在所有生成的下拉列表中禁用所选标记,但是当前正在操作该标记。此时,代码部分工作,但似乎没有完全消除具有多个相同标记的可能性。理论上,代码应禁用所有其他下拉列表中的标记,并在取消后将其返回到启用状态。我的代码如下(我为任何格式错误道歉,我是一名盲人程序员):
$('div#base_markings').on('change', 'select.base_marking', function(){
var base_marking = $(this).val();
$('select.base_marking').not(this).find('option[value="'+base_marking+'"]').prop('disabled', true);
$(this).find('option[value="'+base_marking+'"]').prop('disabled', false);
processDemo();
showColors();
});
非常感谢任何帮助。
更新:该演示现在按预期工作,但我似乎无法通过点击“删除基本标记”来动态删除重新启用选项的演示。 (或'删除专色标记')。下面是我的基本标记删除按钮的代码:
$('div#base_markings').on('click', 'button.remove_base_marking', function(){
$('select.base_marking').each(function(){
$('select.base_marking option[value="'+$(this).data('index')+'"]').prop('disabled', false);
$(this).data('index', this.value);
$('select.base_marking option[value="'+this.value+'"]').prop('disabled', false);
$(this).find('option[value="'+this.value+'"]').prop('disabled', false);
});
$(this).closest('div.base_markings_options').remove();
processDemo();
base_marking_count --;
});
答案 0 :(得分:0)
这个答案是针对您的最新问题,并遵循上述讨论中的评论。此代码应重新启用每个option
菜单中属于刚刚删除的值的select
。
$('div#base_markings').on('click', 'button.remove_base_marking', function() {
// get value of the select menu that's being deleted
var delValue = $(this).closest('.base_markings_options').find('select').val();
// loop through each select
$('select.base_marking').each(function() {
// find the option with the deleted value and remove disabled attr
$(this).find('option[value="' + delValue + '"]').removeProp('disabled');
});
$(this).closest('div.base_markings_options').remove();
processDemo();
base_marking_count--;
});