Javascript JQuery$.contains方法始终返回false
我对JQuery代码的这一部分有一个问题:Javascript JQuery$.contains方法始终返回false,javascript,jquery,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(containe
$(".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,而从不返回false;,即使li包含div元素,如下所示:
<li class="ui-droppable">
<div class="ui-draggable">
</li>
如何解决此问题?实用程序方法$.contains无法按预期工作
它采用的参数是:container和contained,您可以像这样使用它:
$.contains(container, contained)
这两个参数都应该是DOM元素,而不是jQuery对象或选择器
因此,在您的情况下,因为您没有寻找包含在另一个特定元素中的特定元素,所以不能使用$.contains-您必须使用另一个方法
我建议使用。查找并计算匹配数:
if (container.find("div").length > 0) {
}
当然,如果您只想查看直系子女,请使用:
if (container.children("div").length > 0) {
}
实用程序方法$.contains无法按预期工作
它采用的参数是:container和contained,您可以像这样使用它:
$.contains(container, contained)
这两个参数都应该是DOM元素,而不是jQuery对象或选择器
因此,在您的情况下,因为您没有寻找包含在另一个特定元素中的特定元素,所以不能使用$.contains-您必须使用另一个方法
我建议使用。查找并计算匹配数:
if (container.find("div").length > 0) {
}
当然,如果您只想查看直系子女,请使用:
if (container.children("div").length > 0) {
}
链接时,您将执行以下操作:
if ( container.has('div') ) {...}
链接时,您将执行以下操作:
if ( container.has('div') ) {...}
容器。有'div'容器。有'div'是的。它声明如下:$.contains方法在第二个参数提供的DOM元素是第一个参数提供的DOM元素的后代时返回true。所以我很想知道为什么它不起作用。另外,我早些时候尝试了$.find。忘了我需要特别检查长度。非常感谢@我刚刚编辑了Sefam,希望有一个有帮助的解释。问题在于$方法包含哪些参数accepts@lan“>0是不必要的。@Derek朕會功夫 是的,我知道,很多东西在Javascript中是不必要的,因为事情是隐式完成的,但我喜欢显式的。它声明如下:$.contains方法在第二个参数提供的DOM元素是第一个参数提供的DOM元素的后代时返回true。所以我很想知道为什么它不起作用。另外,我早些时候尝试了$.find。忘了我需要特别检查长度。非常感谢@我刚刚编辑了Sefam,希望有一个有帮助的解释。问题在于$方法包含哪些参数accepts@lan“>0是不必要的。@Derek朕會功夫 是的,我知道,在Javascript中有很多事情是不必要的,因为事情是隐式完成的,但我喜欢显式的。你不能将选择器作为第二个参数传递。它只接受两个参数的DOM元素。@lan-看起来您可以传入选择器。has:@Derek朕會功夫 - 评论是在答案中包含$.contains的部分,我删除了它,因为它根本不是用于此的正确方法。这将是正确的方法!不能将选择器作为第二个参数传递。它只接受两个参数的DOM元素。@lan-看起来您可以传入选择器。has:@Derek朕會功夫 - 评论是在答案中包含$.contains的部分,我删除了它,因为它根本不是用于此的正确方法。这将是正确的方法!