jQuery可在<select> </select> </options>中向上/向下移动多个<options>

时间:2013-10-11 06:25:39

标签: javascript jquery html

我正在尝试使用以下代码移动,但是当我选择多个选项时,它无法正常工作

如何上下移动多个元素?

<script type="text/javascript">  
  \$().ready(function() { 
//for moving elements up and down
\$('.up-button').click(function(){

 before = \$('#select2 option:selected').prev();
    \$('#select2 option:selected').insertBefore(before);
    });

\$('.down-button').click(function(){
   after = \$('#select2 option:selected').next();
    \$('#select2 option:selected').insertAfter(after);
}); 
   });  
 </script>

您可以在JS live code

找到参考

2 个答案:

答案 0 :(得分:2)

使用.first().last(),因为您选择了多个元素

//for moving elements up and down
$('.up-button').click(function(){
 before = $('#select2 option:selected').first().prev();
    $('#select2 option:selected').insertBefore(before);

});

$('.down-button').click(function(){
   after = $('#select2 option:selected').last().next();
    $('#select2 option:selected').insertAfter(after);
}); 

答案 1 :(得分:1)

稍微改变了逻辑:

$('.up-button').click(function(){
  $('#select2 option:selected:first-child').prop("selected", false);
  before = $('#select2 option:selected:first').prev();
    $('#select2 option:selected').detach().insertBefore(before);

});

$('.down-button').click(function(){
  $('#select2 option:selected:last-child').prop("selected", false);
  after = $('#select2 option:selected:last').next();
    $('#select2 option:selected').detach().insertAfter(after);
}); 

fiddle