使用jQuery

时间:2016-12-20 20:05:06

标签: jquery

我有一个可以在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 --;
   });

1 个答案:

答案 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--;
});