JQuery $ .contains方法总是返回false

时间:2013-04-02 22:25:06

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

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

如何解决此问题?

2 个答案:

答案 0 :(得分: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) {

}

答案 1 :(得分:2)

链接时你会这样做:

if ( container.has('div') ) {...}