0

我有一个 jquery 对象,里面有很多东西。

var $item = $();
$("div.t2").click(function(){
    $item = $item.add(this);
    $(this).css("background-color","red");
});

现在我想流畅地移动所有物品,保持它们之间的关系。

我打算使用可拖动的,并且正在考虑执行以下操作:解析 $items 并存储当前位置,然后最终应用于鼠标差异。我会怎么做呢?

我试图做类似的事情:

$item.each(function(){
   //content
});

但它似乎没有选择东西,同样,一些简单的东西,比如:

$item.each(function(){
    $(this).click(function(){
        $(this).css("background-color","green");
    });
});

在我什至开始拖动整个组之前,这也不适用于选择。

我应该把整个 jquery 对象克隆到一个新的 div 中,然后移动 div ......然后重新应用定位吗?

4

1 回答 1

0

为此,我创建了一个 jquery 对象数组来封装选定的对象。(或多或少地维护指向对象的指针等)。然后当你拖动时,你会做一些花哨的小魔术。

为每个 dom 元素的内容创建 2 个新属性 offx 和 offy。这样,您可以执行以下操作:

.draggable({
   start: function(){

      $array.each(function(){
         $(this).attr('offx', $(this).attr('left') - $(event.target).attr('left'));
         $(this).attr('offy', $(this).attr('top') - $(event.target).attr('top'));
      });
   },
   drag: function(){
      $array.each(function(){
         $(this).attr("left", $(event.target).attr("left") + $(this).attr("offx"));
         $(this).attr("top", $(event.target).attr("top") + $(this).attr("offy"));
      });
   }
});

这样,在拖动时,它将更新与所选对象相关的所有项目。

于 2012-08-15T13:10:14.217 回答