2011-08-26 7 views
9

CSSクラスを特定の領域にドラッグしている間に要素に追加して、要素を削除した後にクラスを置き換えることはできますか?w/jQuery上でドラッグしてCSSクラスを要素に追加する

私はこの機能をどこからでも探しているわけではなく、特定のエリアのみを探しています。

+0

終了時にクラスを追加し、削除すると新しいクラスを削除して追加しますか? –

+0

jQuery UIライブラリを使用していますか(ドラッグ可能/削除可能な対話あり)ですか? –

+0

はい、ドラッグアンドドロップのjQuery UIを使用します。 – santa

答えて

-2

私が最初に考えたのは、クラスを変更したい領域のx、y座標、高さ、幅を集めることです。次に、オブジェクトがその境界内にあるときに、オブジェクトのx、y座標を取得できると仮定して、クラスを追加します。

+0

私のエリアに既にクラスが割り当てられている場合はどうなりますか? – santa

+0

これを行うjQueryプラグインがある場合、なぜこれはすべて機能しますか? OPはjQueryに言及しました... –

21

確かに可能です。 jQuery UIには、これを行うための便利なオプションとイベントが用意されています。

ドラッグ可能な要素は、ドラッグされている間はいつでもクラス.ui-draggable-draggingによって参照できます。

droppableメソッドは、overと呼ばれるイベントを提供します。このイベントは、有効なドラッグ可能なオブジェクトがその上に乗っているときはいつでも関数を実行します。したがって、その関数の内部では、.ui-draggable-draggingを参照してクラスを追加することができます。

Outdropイベントも提供されており、同様にドラッグ可能な要素をターゲットにできます。ここではそれがどのように見えるかです:

$("#droppable").droppable({ 
    // tolerance can be set to 'fit', 'intersect', 'pointer', or 'touch' 
    tolerance: 'intersect', 
    // Add .hoverClass whenever #draggable is being hovered over #droppable 
    over: function(event, ui) { 
     $('.ui-draggable-dragging').addClass('hoverClass'); 
    }, 
    // Remove .hoverClass whenever #draggable is no longer hovered over #droppable 
    out: function(event, ui) { 
     $('.ui-draggable-dragging').removeClass('hoverClass'); 
    }, 
    // Add .dropClass whenever #draggable is dropped on #droppable 
    drop: function(event, ui) { 
     $('.ui-draggable-dragging').removeClass('hoverClass').addClass('dropClass'); 
    } 
}); 

上記のコードは#draggable#droppableと交差するクラスを追加し、#draggable#droppableへ落とされ、そのクラスが置き換えられます。さらに、2つの要素がもはや交差しない場合、.hoverClassが削除されます。ここにはworking example on jsfiddleがあります。

希望に役立ちます。

+2

Nice answer。 mootools/jQueryのドラッグアンドドロップは、HTML5のドラッグアンドドロップから、HTML5の実装に迷惑をかけないようになっています。 –

+2

jquery UIなしのソリューションは何ですか? –

3

私はコールバックによって提供された準備されたUIオブジェクトを使用するのが面白いので、再度DOMクエリを作成する必要はありません。どんな小さなパフォーマンスの向上は... ...

over: function(e, ui) { 
    $(ui.helper[0]).addClass("success"); 
    } 

をドラッグ&ドロップ& ;-) を使用する場合は特に

最高に良いです。

+0

非常に興味深い、ありがとう。 – santa

関連する問題