ここで、JQueryコードのこの部分に問題があります。
$(".roomblock_slots li").droppable({ activeClass: "drop_here", hoverClass: "hover_here", tolerance: "pointer",
drop: function (event, ui) {
var container = $(this);
if (container.contains(container,"div")) {
return false;
}
return true;
} });
要素をli要素にドロップしようとしています。div要素が含まれているかどうかを確認したいと思います。問題は、liに次のようなdiv要素が含まれている場合でも、関数自体が常にfalseを返し、「returnfalse;」になることはないということです。
<li class="ui-droppable">
<div class="ui-draggable">
</li>
この問題を解決するにはどうすればよいですか?
回答:
回答№1の場合は3ユーティリティメソッド $.contains
期待どおりに機能しません。
http://api.jquery.com/jQuery.contains/
必要なパラメータは次のとおりです。 container
そして contained
、そしてあなたはそれを次のように使用します:
$.contains(container, contained)
両方のパラメーターはDOM要素であると想定されています... jQueryオブジェクトまたはセレクターではありません。
したがって、あなたの場合、「別の特定の要素に含まれている特定の要素を探していないので、使用することはできません」 $.contains
-別の方法を使用する必要があります。
私は .find
一致する数を数えます:
if (container.find("div").length > 0) {
}
もちろん、直接の子供だけを見たい場合は、以下を使用してください。
if (container.children("div").length > 0) {
}
回答№2については2
連鎖するときは、次のことを行います。
if ( container.has("div") ) {...}