javascript - jquery has() 似乎没有按预期工作

标签 javascript jquery

我有这个 Fiddle ,由于某种原因,我的下拉菜单在单击时不起作用。

在 fiddle 中,当您单击“格式”时,它应该会下拉,但它没有这样做。什么也没有发生,我认为使用 has() jquery 方法可以工作,但它没有这样做。难道是我使用不当?

$("ul > li").on("click", function(){
    $(this).has("ul").css({display: "block"});
});

最佳答案

在这种情况下,

.has 不是您要查找的函数。这就是 has 的用途:

假设您有一个如下所示的 HTML 结构:

<div>
  <em>hey</em>
</div>

<div>
  <ul>
    <li>hello</li>
  </ul>
</div>

<div>
  <strong>hey</strong>
</div>

现在假设您使用 jQuery 选择器 ($('div')),那么您将获得一个 jQuery 对象,其中包含 3 个不同的元素:

  • 第一个 div(带 em)
  • 第二个 div(带有 ul)
  • 第三个 div(强)

现在假设您想将它们过滤为仅包含内部有 ul 的 div。您可以使用 .has 来做到这一点:

$('div').has('ul')

现在您将得到一个包含 1 个元素的结果集:

  • 第二个 div(带有 ul)

使用 .has 不会像您期望的那样向下遍历到 ul。您应该只使用 .find 来代替,如下所示:

$("ul > li").on("click", function(){
    $(this).find('ul').css({display: "block"});
});

关于javascript - jquery has() 似乎没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826583/

相关文章:

javascript - chrome.tabs.executeScript() 格式问题

javascript - 如何使用 JavaScript 在 asp.net 中基于另一个文本框的文本框上进行验证?

jquery - IE中的边界半径问题

javascript - 有什么方法可以使用 qunit 测试异步 jquery 插件,避免嵌入 "start()"并保持异步?

javascript - 如何在数字数组中插入零序列?

javascript set - 将值添加到集合内对象的数组中

javascript - 使用 Hammer.js 编程事件触发器

javascript - 使用 Ryan Fait "Check All"自定义表单元素时的 's "函数”

javascript - 谷歌地图 MarkerWithLabel CSS 悬停效果故障

javascript - 如何将ajax响应/结果放入变量php