2012-07-17 43 views
0

我可以从多选元件转移所选项目到另一个问题:如何将多重选择的所有项目转移到另一个多重选择?

<script language="javascript"> 
    $().ready(function() { 
    $('#btnOne').click(function() { 
     return !$('#users_interdits option:selected').remove().appendTo('#users_autorises'); 
    }); 
    $('#btnUndoOne').click(function() { 
     return !$('#users_autorises option:selected').remove().appendTo('#users_interdits'); 
    }); 
    }); 
</script> 

此代码不会考虑“把所有” functionnality中,当我点击情况下,“将所有”按钮,然后#users_interdits中的所有剩余项目都将转移到#users_autorises中。 如何做到这一点?

+0

邮报“全部发送”处理程序的代码...... – Chandu 2012-07-17 13:54:00

+1

'appendTo'会自动地从一个地方的元素在DOM到另一个,没有理由在appendTo调用之前执行.remove()。 – Ohgodwhy 2012-07-17 13:54:05

+0

你尝试过什么吗?你有没有写过你的代码?使用您已有的代码作为起点,实现您所需的内容是微不足道的。 – lanzz 2012-07-17 13:54:24

回答

1

你只需要删除:selected选择匹配所有选项:

$("#users_interdits option").appendTo("#users_autorises"); 
1
$('#btnOne, #sendAll').on('click', function() { 
    $('#users_interdits option'+($(this).is('#btnOne') ? ':selected' : '')) 
     .remove() 
     .appendTo('#users_autorises'); 
}); 

唯一的区别是,在整个发送所有的选项,你不娘家的:selected伪选择。

我假设你的意思是你实际上想从一个选择中清空选项并将它们移动到另一个选项,而不是让选项同时存在于两个选择中。如果是后者,只需拨打remove()即可。

+1

请参阅上面的Ohgodwhy的注释:'appendTo()'在将它们附加到它们的新父项之前将删除这些元素,所以在这里调用'remove()'不是必需的。如果你希望它们存在于父母中,你将不得不克隆()该元素。 – 2012-07-17 14:05:10

+0

啊,有趣的 - 我认为'append()克隆而不是删除。 +1。 – Utkanos 2012-07-17 14:11:12