我在这里遇到了这个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>
如何解决此问题?
答案 0 :(得分: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) {
}
答案 1 :(得分:2)
链接时你会这样做:
if ( container.has('div') ) {...}