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オブジェクトの配列を作成しました。(多かれ少なかれオブジェクトへのポインタなどを維持します)。次に、ドラッグしているときに、ちょっとした魔法をかけます。

コンテンツの2つの新しい属性、各dom要素の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 に答える