搜尋

首頁  >  問答  >  主體

javascript - jQuery对元素进行拖动并重新排序 ??

像淘宝上面那样,鼠标悬停时单击左右按钮 和删除按钮。 单击左边时,原来图片会向向移动,向左的图片会引用到原来的位置。

传送门
<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Document</title>

<link rel="stylesheet" href="bootstrap.min.css">
<link rel="stylesheet" href="upload.css">
</head>
<body>
<ul class="upload inline-control">

<li class="pic0">
    <img src="//192.168.0.3:8888/resource/image/1.jpg" id="cart-1">
        <p class="operate">
            <i class="toleft">左移</i>
            <i class="toright">右移</i>
            <i class="del" data-id="1">删除</i>
        </p>
</li>
<li class="pic1">
    <img src="//192.168.0.3:8888/resource/image/2.jpg" id="cart-2">
        <p class="operate">
            <i class="toleft">左移</i>
            <i class="toright">右移</i>
            <i class="del" data-id="2">删除</i>
        </p>
</li>
<li class="pic2">
    <img src="//192.168.0.3:8888/resource/image/3.jpg" id="cart-3">
        <p class="operate">
            <i class="toleft">左移</i>
            <i class="toright">右移</i>
            <i class="del" data-id="3">删除</i>
        </p>
</li>
<li class="pic3">
    <img src="//192.168.0.3:8888/resource/image/4.jpg" id="cart-4">
        <p class="operate">
            <i class="toleft">左移</i>
            <i class="toright">右移</i>
            <i class="del" data-id="4">删除</i>
        </p>        
</li>
<li class="pic4">
    <img src="//192.168.0.3:8888/resource/image/5.jpg" id="cart-5">
        <p class="operate">
            <i class="toleft">左移</i>
            <i class="toright">右移</i>
            <i class="del" data-id="5">删除</i>
        </p>    
</li>

</ul>

<script src="js/jquery.min.js"></script>
<script>

  $(".toright").click(function(){

  });
 $(".toleft").click(function(){
       
  });
  $(".del").click(function(){
      // var $this=$(this),
      // id=$this.data('id'),
      // $parent=$("#cart-"+id);
      // $parent.fadeOut();
      $("#cart-"+$(this).data('id')).remove()
  });

</script>

</body>
</html>
index()可以获取到某个元素在兄弟节点中的位置,先获取到你点击的那个图片在同级节点中的位置,让位置减一,获取到减一后位置的元素的ID,再把这个元素插入到那个元素前面去,就左移了
这个写法是怎么写啊?

PHP中文网PHP中文网2775 天前412

全部回覆(2)我來回復

  • 黄舟

    黄舟2017-04-10 15:54:53

    建议用Model > View的方法,把LI对象先保存到不可见的数据层中,要移位时先在数据层的数组的排序好,然后把UL清空,把新顺序的LI写进UL上。

    先保存当前位置:

    window.arr = [];
    $('ul > li.pic').each(function(i){
      $('.left', this).on('click', function(){
        liOnClick('left', i);
      });
      $('.right', this).on('click', function(){
        liOnClick('right', i);
      });
      window.arr.push(this);
    });

    处理向左向右事件:

    function liOnClick(direction, i){
      var temp;
      if(direction == 'left') {
        temp = window.arr[i];
        window.arr[i] = window.arr[i-1];
        window.arr[i-1] = temp;
      }
      if(direction == 'right') {...}
      liRender();
    }

    重绘LI

    function liRender() {
      $('ul').empty();
      $.each(window.arr, function(){
       $('ul').append(this);
      });
    }

    以上为大概的代码,仅供参考,不保证运行正常。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 15:54:53

    有个Js插件叫sortable,实现鼠标拖动重新排序,功能挺强大实用的,也能实现类似需求

    回覆
    0
  • 取消回覆