javascript – 通过jquery上下移动选择选项

前端之家收集整理的这篇文章主要介绍了javascript – 通过jquery上下移动选择选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我得到这个代码适用于Firefox和Chrome …它的作用是它允许您重新排序 HTML选择窗体中的选项…但是当我通过IE8测试代码,它是一种补丁…它仅适用于前几次点击,之后您必须在按钮上多次点击才能正常工作.

有没有人知道任何其他代码,允许您重新排序在IE8中完美工作的选择字段项?

<select id="list" multiple="multiple">
     <option value="wtf">bahaha</option>
        <option value="meh">mwaahaha</option>

</select>
<button id="mup">Move Up</button>
<button id="mdown">Move Down</button>
<a href="#">Add Item</a>
<a href="#">Remove item</a>

<script>

$(document).ready(function(){

 $('#mup').click(function(){

  moveUpItem();

 });

 $('#mdown').click(function(){

  moveDownItem();

 });


});

 function moveUpItem(){
  $('#list option:selected').each(function(){
   $(this).insertBefore($(this).prev());
  });
 }

 function moveDownItem(){

  $('#list option:selected').each(function(){
   $(this).insertAfter($(this).next());
  });

 }

解决方法

您的更改选项的代码工作正常.看起来IE8并没有使用点击事件处理“快速”二次点击,而是期望双击被处理.

使用下面的测试代码,您会发现在IE8中按下“快”键时,会写出以下内容

Move Down Click
Move Down Double-Click
Move Down Click
Move Down Double-Click

但是用FF / Chrome打印如下:

Move Down Click
Move Down Click
Move Down Double-Click
Move Down Click
Move Down Click
Move Down Double-Click

这是我用来测试的代码.我没有做任何测试,看看是否是导致问题的jQuery的事件绑定器.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>    
    <title>Test</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>

</head>
<body>

<select id="list" multiple="multiple">
    <option value="option1">Option 1</option>
    <option value="option2">Option 2</option>
    <option value="option3">Option 3</option>
</select>

<button id="mup">Move Up</button>
<button id="mdown">Move Down</button>

<script type="text/javascript">

var $DEBUG = null;

$(document).ready(function ()
{
    $DEBUG = $("#debug");

    $DEBUG.append("Registering Events<br />");

    $("#mup").click(moveUpItem);
    $("#mdown").click(moveDownItem);
    $("#mup").bind("dblclick",function ()
    {
        $DEBUG.append("Move Up Double-Click<br />");
    });
    $("#mdown").bind("dblclick",function ()
    {
        $DEBUG.append("Move Down Double-Click<br />");
    });

});

function moveUpItem()
{
    $DEBUG.append("Move Up Click<br />");
}

function moveDownItem()
{
    $DEBUG.append("Move Down Click<br />");
} 

 </script>

 <div id="debug" style="border: 1px solid red">
 </div>

</body>

</html>

编辑:我可以确认是IE8的问题.在$(document).ready()处理程序中交换这个IE8特定的代码

// $("#mup").click(moveUpItem);
$("#mup")[0].attachEvent("onclick",moveUpItem);
// $("#mdown").click(moveDownItem);
$("#mdown")[0].attachEvent("onclick",moveUpItem);
// $("#mup").bind("dblclick",function ()
$("#mup")[0].attachEvent("ondblclick",function ()
{
    $DEBUG.append("Move Up Double-Click<br />");
});
// $("#mdown").bind("dblclick",function ()
$("#mdown")[0].attachEvent("ondblclick",function ()
{
    $DEBUG.append("Move Down Double-Click<br />");
});
原文链接:https://www.f2er.com/jquery/151746.html

猜你在找的jQuery相关文章