/ / JQuery $ .containsメソッドは常にfalseを返します-javascript、jquery

JQuery $ .containsメソッドは常にfalseを返します - javascript、jquery

ここで、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") ) {...}