2012-01-13 33 views
0

我使用下面的JavaScript去除下拉列表中选择一个选项,从下拉菜单B.jQuery来删除从其他下拉菜单下拉一个选择的选项停止工作并挂起

$('#A').bind('keypress', function(e){ 

     if (e.which == 52){ 
     var selectedItems = $('#A').val(); 
     var $list = $("#B"), 
      toRemove = $(), 
      selectedItems = $("#A").val(); 
     for (var i = 0 ; i < selectedItems.length; i++) { 
      toRemove = toRemove.add($list.find('option[value="' + selectedItems[i] + '"]')); 
     } 
     toRemove.remove(); 
     } 
}); 

的选项去掉从DropDown B,但是,当我按下键时,javascript挂起。请帮忙。

是否还有其他的jQuery?

+0

“挂出”是什么意思?您是否在JavaScript控制台中收到错误消息? – nnnnnn 2012-01-13 08:23:03

+0

页面上的所有其他javascripts都卡住了,比如我在下拉列表A的列中有一个工具提示,并且工具提示仍然打开 – sqlchild 2012-01-13 08:26:32

+0

但是实际上从下拉B中删除了项目_is_?在你的代码中有几件事会改变,但是没有一件能够解释其他控件或函数被破坏。 – nnnnnn 2012-01-13 08:30:19

回答

0

我无法解释为什么一切都挂起,但我认为在代码中可以改进一些东西。

如果你有一个“下拉菜单”,则选择元素将是单选择,这意味着.val() method将返回一个字符串,而不是阵列(它仅在一个<select multiple="multiple">元件的情况下返回一个数组),和如果它返回一个字符串,则不需要for循环,因为 - 没有什么可以循环。如果这是真的你的代码的简化版本是这样的:

$('#A').bind('keypress', function(e){ 
    if (e.which === 52){ 
     $('#B option[value="' + $(this).val() + '"]').remove(); 
    } 
}); 

如果在#B所选项目没有匹配的选项,则什么都不会发生。

我不明白关键代码52的意义,但我已经把它留在了。

+0

先生,选择A是多个 – sqlchild 2012-01-15 09:03:04

相关问题