2012-02-25 5 views
0

複数のjquery UI要素のグループを、グループ内のいずれの要素とのやりとりにもすべて対応できるように設定できますか?複数のjquery要素を互いにバインドする

編集: たとえば、私はjquery.tabs()で別のページにグループ化した非常に似た画像のいくつかのバージョンがあります。画像は、さまざまなjquery UIのオブジェクト(ドラッグ可能、サイズ変更可能など)ですべて操作可能です。画像へのパスを除いて、すべてのタブが同じに見えるはずです。そのため、1つのタブで画像をドラッグまたはサイズ変更すると、他のタブの対応する画像も同じようになります。

+0

この回答を見つけます。それは役に立つかもしれません。 http://stackoverflow.com/questions/793559/grouping-draggable-objects-with-jquery-ui-draggable – DG3

答えて

1

何があなたがやりたいUIオブジェクトは、このようなdraggable()ためdragとして提供するイベントを使用することによって達成することができます。

例:http://jsfiddle.net/elclanrs/WcNNb/2/

$('#drag1').draggable(); 
$('#drag2').draggable({ 
    drag: function(){ 
     $('#drag1').offset({ 
      top: $(this).offset().top, 
      left: $(this).offset().left - $('#drag1').width() - 20 
     }); 
    } 
}); 
1

例えば使用:$('#element1').add($('#element2).draggable();

いますが、要素2がドラッグされたときに要素1ドラッグする場合: 中の要素は、UI-ドラッグドラッグ使用のクラスを取得ドラッグ以来:

if($('#element1')).hasClass('ui-draggable-dragging')){ 
    //drag #element2 
} 
+0

これらの要素は独立してドラッグされているようです... – ajwood

+0

これはうまくいくかもしれませんが、より良い方法があります。 – elclanrs

+0

グループ化されたすべての要素をdivに配置し、divをドラッグ可能にする方法はありますか? – glortho

1

のは、同様の要素が共通のクラス名、例えば `クラス=「elementType_n」を持っていることを前提にしてみましょう。次のように

次に、あなたは、すべて同様の要素を選択し、1として、または順序でそれらに基づいて行動することができます

のjavascript:

draggablesについては
$selection_n = $(".elementType_n"); 
$selection_n.on('eventType', function(){ 
    //Here, depending on the action, either 
    //* act on $selection_n all together, eg. $selection_n.methodA(...)..methodB(...); 
    // or 
    //* act on $(this) with eg. $(this).methodA(...)..methodB(...); then use $(this)'s resulting properties to act on the rest of the selection, eg. $selection_n.not($(this).methodA(...)..methodB(...); 
}); 

、と同情の隠し要素をドラッグしない点はありません目に見える、ドラッグされた要素。誰が彼らの動きを見るのだろうか?代わりに、drag.oncompleteハンドラを設定して、不可視のオフセットをドラッグして要素のオフセットと一致するように設定します。最終結果 - 同一。効率性 - それ以上。 (Droppableは別の問題です)。

+0

ちょっと前に追加されました。 draggables。 –

関連する問題