Javascript jquery has()不';I don’我好像没有按预期工作

Javascript jquery has()不';I don’我好像没有按预期工作,javascript,jquery,Javascript,Jquery,我有一个,由于某种原因,我的下拉菜单在单击时不起作用 在小提琴中,当你点击“格式”时,它应该下拉,但它没有这样做。什么都没有发生,我认为使用has()jquery方法会起作用,但它没有起作用。我用错了吗 $("ul > li").on("click", function(){ $(this).has("ul").css({display: "block"}); }); 我认为问题与事件处理程序的定义有关。如果您以回调中的按钮为目标,您可以从那里访问下拉列表: $("ul >

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

在小提琴中,当你点击“格式”时,它应该下拉,但它没有这样做。什么都没有发生,我认为使用
has()
jquery方法会起作用,但它没有起作用。我用错了吗

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

我认为问题与事件处理程序的定义有关。如果您以回调中的按钮为目标,您可以从那里访问下拉列表:

$("ul > li").on("click", function(e){
    $(e.target).next("ul").css({display: "block"});
});
如果再次单击按钮时希望下拉列表向上滑动,可以执行以下操作:

$("ul > li").on("click", function(e){
    $(e.target).next("ul").slideToggle();
});

我认为问题与事件处理程序的定义有关。如果您以回调中的按钮为目标,您可以从那里访问下拉列表:

$("ul > li").on("click", function(e){
    $(e.target).next("ul").css({display: "block"});
});
如果再次单击按钮时希望下拉列表向上滑动,可以执行以下操作:

$("ul > li").on("click", function(e){
    $(e.target).next("ul").slideToggle();
});

.has
不是您在本例中要查找的函数。这就是have的用途:

假设您有这样一个HTML结构:

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

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

<div>
  <strong>hey</strong>
</div>
现在您将得到一个结果集,其中包含1个元素:

  • 第二组(带ul)
使用
.has
不会像您预期的那样向下移动到ul。您应该只使用
.find
,如下所示:

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

.has
不是您在本例中要查找的函数。这就是have的用途:

假设您有这样一个HTML结构:

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

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

<div>
  <strong>hey</strong>
</div>
现在您将得到一个结果集,其中包含1个元素:

  • 第二组(带ul)
使用
.has
不会像您预期的那样向下移动到ul。您应该只使用
.find
,如下所示:

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

工作演示

API:

  • 。查找
  • .children
    ::
无论您需要什么
:)

代码

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


工作演示

API:

  • 。查找
  • .children
    ::
无论您需要什么
:)

代码

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


改用
find()
。过滤匹配集,它不会遍历到子代使用
find()
。过滤匹配集,它不会遍历到有意义的子代!谢谢你的解释!好吧,这是有道理的!谢谢你的解释!谢谢我喜欢切换的想法,所以我使用它!谢谢我喜欢切换的想法,所以我使用它!