1

I'm having an issue here with this part of JQuery code:

$(".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;
        } });

I'm trying to drop an element into a li element, and I want to check if it contains a div element. The issue is, the function itself always returns false and never goes into "return false;", even if the li contains a div element, like this:

<li class="ui-droppable">
    <div class="ui-draggable">
</li>

How do I fix this issue?

4

2 に答える 2

3

ユーティリティ メソッド$.containsは期待どおりに機能しません。

http://api.jquery.com/jQuery.contains/

それが取るパラメータは:containercontainedで、次のように使用します:

$.contains(container, contained)

両方のパラメーターは、jQuery オブジェクトやセレクターではなく、DOM 要素であると想定されています。

したがって、あなたの場合、別の特定の要素に含まれる特定の要素を探しているわけではないので、使用できません$.contains。別の方法を使用する必要があります。

.find一致する数を使用してカウントすることをお勧めします。

if (container.find("div").length > 0) {

}

もちろん、直接の子供だけを見たい場合は、次を使用します。

if (container.children("div").length > 0) {

}
于 2013-04-02T22:27:22.697 に答える
2

連鎖するときは、次のようにします。

if ( container.has('div') ) {...}
于 2013-04-02T22:28:23.650 に答える