2009-04-28 64 views
4

我想知道“它是如何工作的”以及“它应该如何设计和实现”这一侧的基本拖动功能。逻辑幕后拖拽

我从来没有实现过这样的功能。我打算为我的一个项目这样做,我对如何实施它有一些想法。我想确保自己走在正确的道路上,并且你最可能也有关于此事的说法......

让我们想象一下,我列出了5个元素,并从数据库中抓取;

<div id="1">this is content for 1</div> 
<div id="2">this is content for 2</div> 
<div id="3">this is content for 3</div> 
<div id="4">this is content for 4</div> 
<div id="5">this is content for 5</div> 

因为这是从数据库中拉出来的,我们知道它有一个名为“sequence”或“order”的字段来区分我们要输出的顺序。让我们也想象一下,“序列”列值与div的ID相同。所以:1,2,3,4和5分别。

我的问题和想法;

如果我将div 4拖放到1和2之间;那里的步骤是什么?例如:

1)确定被拖动的div ID(我们称之为DIV-A

2)确定DIV-A被后插入的div ID (或之前)在后,因此之后的div id为1这种情况下(我们称之为DIV-b

3)更新在分贝DIV-一个的序列,并将其设定为当前序列div-b

这一步,我都糊涂了之后......难道我指望所有曾经下令div的是,我相应地更新数据库的div,并根据?还是我完全错了,还有另一种方式吗?


感谢您的答案,但我知道有插件和其他的东西来完成这件事,但我只是在它的逻辑部分感兴趣..

回答

1

我相信jQuery的为您提供了一种方式抢他们的订单基于ID?

我一直在做它的方式是每时发生的作用,抓住当前的订单,通过AJAX发送回我的应用程序的时间。然后我的应用程序只是从它给出的ID中解析出ID并更新每个项目的订单价值。

+1

感谢phillic你的答案序列。我感兴趣的是逻辑不是如何做到这一点的代码...你的回应给了我一个想法,并证明我是在正确的道路上。 – 2009-05-03 05:18:05

0

除非你是做这为自己的教育,我会建议你使用jQueryUI的。

它拖放和拖放功能,除其他事项外,这可能会帮助你和爸爸的事实真相,让你实现特定于您的问题的部分。

1

http://jqueryui.com/demos/sortable/

$("#col1").sortable({ 
     placeholder: "top", 
     forcePlaceholderSize: true, 
     revert: true, 
     update: function() { 
       $.ajax({ 
        type: "GET", 
        url: "/request.php", 
        data: "data="+$(this).sortable("toArray")+"", 
        success: function(msg){ } 
         });   
      } 
    }); 

指定者是你的div IDS