Jquery拖动和项目位置

标签 jquery jquery-ui

我正在使用jqueryui draggable我必须拖动元素并在数据库中保存该位置,以便下次如果我们加载页面,它将根据之前的调整显示,就像如果第一个项目拖动到第五个元素的底部,那么下次它将显示在第五个元素的下方页面加载。我的问题是我们如何在拖动后获得位置。任何帮助都应该受到赞赏。

<style>
ul { list-style-type: none; margin: 0; padding: 0; margin-bottom: 10px; }
li { margin: 5px; padding: 5px; width: 150px; }
</style>
<script>
$(function() {
$( "#sortable" ).sortable({
revert: true
});
$( "#draggable" ).draggable({
connectToSortable: "#sortable",
helper: "clone",
revert: "invalid"
});
$( "ul, li" ).disableSelection();
});
</script>
</head>
<body>

<ul id="sortable">
<li class="ui-state-default">Item 1</li>
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
<li class="ui-state-default">Item 4</li>
<li class="ui-state-default">Item 5</li>
</ul>

example

最佳答案

检查此示例和 updateCounterStatus 函数:

<style>
  #draggable { width: 16em; padding: 0 1em; }
  #draggable ul li { margin: 1em 0; padding: 0.5em 0; } * html #draggable ul li { height: 1%; }
  #draggable ul li span.ui-icon { float: left; }
  #draggable ul li span.count { font-weight: bold; }
  </style>
  <script>
  $(function() {
    var $start_counter = $( "#event-start" ),
      $drag_counter = $( "#event-drag" ),
      $stop_counter = $( "#event-stop" ),
      counts = [ 0, 0, 0 ];

    $( "#draggable" ).draggable({
      start: function() {
        counts[ 0 ]++;
        updateCounterStatus( $start_counter, counts[ 0 ] );
      },
      drag: function() {
        counts[ 1 ]++;
        updateCounterStatus( $drag_counter, counts[ 1 ] );
      },
      stop: function() {
        counts[ 2 ]++;
        updateCounterStatus( $stop_counter, counts[ 2 ] );
      }
    });

    function updateCounterStatus( $event_counter, new_count ) {
      // first update the status visually...
      if ( !$event_counter.hasClass( "ui-state-hover" ) ) {
        $event_counter.addClass( "ui-state-hover" )
          .siblings().removeClass( "ui-state-hover" );
      }
      // ...then update the numbers
      $( "span.count", $event_counter ).text( new_count );
    }
  });
  </script>
</head>
<body>

<div id="draggable" class="ui-widget ui-widget-content">

  <p>Drag me to trigger the chain of events.</p>

  <ul class="ui-helper-reset">
    <li id="event-start" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-play"></span>"start" invoked <span class="count">0</span>x</li>
    <li id="event-drag" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-arrow-4"></span>"drag" invoked <span class="count">0</span>x</li>
    <li id="event-stop" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-stop"></span>"stop" invoked <span class="count">0</span>x</li>
  </ul>
</div>

关于Jquery拖动和项目位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19558165/

相关文章:

javascript - 通过拖动子项自动增加宽度,但带有滚动条

jquery datepicker 初始化后更改默认日期

javascript - 在将文本添加到文本区域之前从文本中去除 html 标签

javascript - 无法使用 jQuery 获取跨度位置

javascript - 如何使用一个函数的参数来调用另一个函数

javascript - jQuery datepicker 没有正确更新值

javascript - 未捕获的类型错误 : Cannot read property 'focus' of undefined

javascript - 在下拉菜单中选择选项后 append 新的输入字段

javascript - 多级折叠侧边栏箭头方向改变

jQuery UI Datepicker - 为什么它是裸露的?