jQuery.contains()返回错误的输出

时间:2019-05-19 08:05:56

标签: javascript jquery

我正尝试使用jQuery.contains(parent,child)检查某个元素是否为另一个元素的子元素,因此该函数的评估返回true,即使两个元素都不在后,也请在jsfiddle上找到它

HTML

<button onclick="clickme()">Click me</button>

JS

function clickme() {
  parent = $("#parent")
  child = $("#child")
  alert(jQuery.contains(parent,child))
}

父元素具有以下属性

<li id="parent"><a class="dropmenu" selectdropvalue="8" geolocation="IN" href="javascript:void(0);" redirect="https://www.rohm.co.kr/">한국 - 한국어</a></li>

正在检查的子元素具有以下

<span>
  <a style="width: 156px; display: block;" href="javascript:void(0);" id="portals-button" class="ui-selectmenu headlang">
  <span class="ui-selectmenu-status" id="child">Europe - English</span><span class="ui-selectmenu-icon"></span>
</a>
</span>

这是使用它的正确方法吗?

1 个答案:

答案 0 :(得分:1)

来自https://api.jquery.com/jQuery.contains/

  

如果第二个参数提供的DOM元素是第一个参数提供的DOM元素的后代,则$.contains()方法返回true是直接子元素还是更多嵌套

因此,如果我正确解释您的屏幕截图(避免顺便说一句!),它仍将返回true<span><a>的子元素,而<li>是{{ 1}},而您正在使用contains(element li, element span)

考虑到您的最新编辑和jsfiddle:

来自https://api.jquery.com/jQuery.contains/

  

注意:第一个参数必须是DOM元素,而不是jQuery对象或普通JavaScript对象。