1

我在这部分 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 元素。问题是,函数本身总是返回 false 并且永远不会进入“return false;”,即使 li 包含一个 div 元素,如下所示:

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

我该如何解决这个问题?

4

2 回答 2

3

该实用程序方法$.contains无法按预期工作。

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

它采用的参数是:containercontained,您可以像这样使用它:

$.contains(container, contained)

这两个参数都应该是 DOM 元素……而不是 jQuery 对象或选择器。

因此,在您的情况下,由于您不是在寻找包含在另一个特定元素中的特定元素,因此您不能使用$.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 回答