私はドロップ可能なクラス "dropBox"でいくつかのjQuery divを持っています。 divBoxをクラス "teamBox"で受け取りたいのですが、ドロップ可能な "dropBox"コンテナにまだ存在していない場合に限ります。私はdropBoxのover
イベントを使ってこれを試みましたが、dropBoxにdraggable要素が含まれているかどうかを確認すると常にtrueが返されました。私もdropBoxのaccept
部分に条件を置こうとしましたが、同じ問題がありました。以下の両方の試みのコード。ありがとう! accept
jQueryは既にDroppableにあるドラッグ可能な要素を拒否しています
$(".teamBox").draggable({
helper: 'clone',
zIndex: 1,
});
$(".dropBox").droppable({
accept: function(draggable) {
if($(this).has($(draggable).attr('id'))) {
//Always returns false
console.log("Returning false");
return false;
}
return true;
},
drop: function(event, ui) {
var dropped = ui.draggable;
var droppedOn = $(this);
$(this).append($(dropped).clone());
$(".dropBox .teamBox").addClass("item");
$(".item").removeClass("ui-draggable");
$(".item").draggable({
zIndex: 1,
});
}
});
EDIT を使用してover
$(".teamBox").draggable({
helper: 'clone',
zIndex: 1,
});
$(".dropBox").droppable({
accept: '.teamBox',
over: function(event, ui) {
var draggable = ui.draggable;
var over = $(this);
if($(over).find($(draggable).attr('id')))
{
//Always logs as disabling
console.log("Disabling");
$(over).droppable('disable');
}
},
drop: function(event, ui) {
var dropped = ui.draggable;
var droppedOn = $(this);
$(this).append($(dropped).clone());
$(".dropBox .teamBox").addClass("item");
$(".item").removeClass("ui-draggable");
$(".item").draggable({
zIndex: 1,
});
}
});
jQueryの試みを使用して
HTML
<div class="panel-heading">Teams</div>
<div class="panel-body teamContainer">
@foreach($teamContent as $teamID => $teamName)
<div id="{{ $teamID }}" class="teamBox">
<h5><b>{{ $teamName }}</b></h5>
</div>
@endforeach
</div>
<div class="panel-heading">Twitter</div>
<div class="panel-body">
@if(!empty($twitterContent))
@foreach($twitterContent as $twitterID => $screenName)
<span class="{{ $twitterID }}">
<h5>{{ '@' . $screenName }}</h5>
</span>
<div id="{{ $twitterID }}" class="dropBox"></div>
@endforeach
@endif
</div>
<div class="panel-heading">Facebook</div>
<div class="panel-body">
@if(!empty($facebookContent))
@foreach($facebookContent as $pageID => $pageName)
<span class="{{ $pageID }}">
<h5>{{ $pageName }}</h5>
</span>
<div id="{{ $pageID }}" class="dropBox"></div>
@endforeach
@endif
</div>
jQueryの試み私のために働いていた。ここにはa Fiddleがあります。私はLaravel Sparkを使用しているので、HTML内にはFiddleで正しくコンパイルされないLaravelのブレード構文があります。しかし、コードを見ることで、重複したドラッグ可能なアイテムの複製と拒否があるドラッグアンドドロップシステムを作成する方法を知ることができます。
アイデアありがとう!残念ながら、.dropBoxと.teamBoxの両方のインスタンスが多数存在するため、この状況では機能しません。しかし、以前は復帰についてはわかりませんでした。 – HannahHunt
その場合、ドラッグ可能にドロップされたときに属性またはクラスをドラッグ可能なものに割り当てます。これにより、その属性またはセレクタをチェックし、元に戻すかどうかを判断できます。 – Twisty
@HannahHannahHuntもう一つの考え方は、項目があなたのdroppableにドラッグされたときに 'true'または' false'に割り当てられるグローバル変数です。これらを行う多くの方法。最後に、アイテムがすでに存在しているかどうかを確認し、元に戻すかどうかを確認する必要があります。 – Twisty