Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery选择e.target的子级_Jquery_Html_Css_Drop Down Menu_Target - Fatal编程技术网

jQuery选择e.target的子级

jQuery选择e.target的子级,jquery,html,css,drop-down-menu,target,Jquery,Html,Css,Drop Down Menu,Target,我有一个jQuery代码,在我单击列表元素时切换类。 如果你点击列表区域就可以了。。。 但是,当您单击包含文本“Element1”的span元素时,它不起作用 我想使用这个jQuery函数只对具有另一个 ul作为孩子(Element1) 我不想通过单击任何子级来关闭下拉菜单ul 元素 $(“.sidebar>ul>li”)。具有(“ul”)。单击( 职能(e){ 如果((e.target==此)){ $(this.children(“ul”).toggleClass(“toggle”); }

我有一个jQuery代码,在我单击列表元素时切换类。 如果你点击列表区域就可以了。。。 但是,当您单击包含文本“Element1”的
span
元素时,它不起作用

  • 我想使用这个jQuery函数只对具有另一个
    ul
    作为孩子(Element1
  • 我不想通过单击任何子级来关闭下拉菜单
    ul
    元素
  • $(“.sidebar>ul>li”)。具有(“ul”)。单击(
    职能(e){
    如果((e.target==此)){
    $(this.children(“ul”).toggleClass(“toggle”);
    }
    }
    );
    
    
    .侧边栏ul li ul{
    显示:无;
    }
    .侧边栏ul li ul.切换{
    显示:块;
    }
    
    
    • 要素1
      • 子元素1
    • 元素2
    使用事件而不是
    e.target
    来获取单击的
    span
    元素的父元素
    ul
    。和用于防止事件在DOM树中冒泡

    (".sidebar>ul>li").has("ul").click( function(e) { 
       $(this).children("ul").toggleClass("toggle"); 
    })
    .children("ul").click(function(e) {
       e.stopPropagation();
    });
    
    使用事件而不是
    e.target
    获取单击的
    span
    的父
    ul
    元素。和用于防止事件在DOM树中冒泡

    (".sidebar>ul>li").has("ul").click( function(e) { 
       $(this).children("ul").toggleClass("toggle"); 
    })
    .children("ul").click(function(e) {
       e.stopPropagation();
    });
    

    以下是实现此目标的方法:

    请注意,在他的评论中,如>St2425,“根据HTML5规范,Li元素仅作为UL或OL元素内的列表项有效。< /代码>”因此,您应该考虑在<<强> >代码> UL> /代码> <强>或> <强> >代码> OL/COD> < /强>中,包覆外部<强> >代码> L> <代码> <强>元素。标签

    var-sidebarItems=$(“.sidebar>li”);
    sidebarItems.on('click',函数(e){
    var$th=$(此),
    子列表=$(this.children(“ul”);
    //通过移除“打开”类折叠其他子ul
    sidebarItems.not($(this)).children('ul').removeClass('open');
    //检查单击的元素是否是子元素的子元素,该子元素
    //打开类,如果不打开,则切换“打开”类,注意
    //我们使用$(e.target)将目标转换为jQuery对象
    if(!$(e.target).parents('ul').hasClass('open')){
    子列表。切换类(“打开”);
    }否则{
    //只是为了演示
    log('您单击了'+$(e.target.text());
    }
    });
    
    li{光标:指针;字体大小:粗体;}
    li ul{显示:无;}
    li ul.open{display:block;}
    li ul.open li{font-weight:normal;}
    
    
  • 要素1
    • 子要素1.1
    • 分要素1.2
  • 要素2
    • 次级要素2.1
    • 次级要素2.2
    • 次级要素2.3
  • 要素3
    • 次级要素3.1
    • 次级要素3.2

  • 以下是一种实现此目标的方法:

    请注意,在他的评论中,如>St2425,“根据HTML5规范,Li元素仅作为UL或OL元素内的列表项有效。< /代码>”因此,您应该考虑在<<强> >代码> UL> /代码> <强>或> <强> >代码> OL/COD> < /强>中,包覆外部<强> >代码> L> <代码> <强>元素。标签

    var-sidebarItems=$(“.sidebar>li”);
    sidebarItems.on('click',函数(e){
    var$th=$(此),
    子列表=$(this.children(“ul”);
    //通过移除“打开”类折叠其他子ul
    sidebarItems.not($(this)).children('ul').removeClass('open');
    //检查单击的元素是否是子元素的子元素,该子元素
    //打开类,如果不打开,则切换“打开”类,注意
    //我们使用$(e.target)将目标转换为jQuery对象
    if(!$(e.target).parents('ul').hasClass('open')){
    子列表。切换类(“打开”);
    }否则{
    //只是为了演示
    log('您单击了'+$(e.target.text());
    }
    });
    
    li{光标:指针;字体大小:粗体;}
    li ul{显示:无;}
    li ul.open{display:block;}
    li ul.open li{font-weight:normal;}
    
    
  • 要素1
    • 子要素1.1
    • 分要素1.2
  • 要素2
    • 次级要素2.1
    • 次级要素2.2
    • 次级要素2.3
  • 要素3
    • 次级要素3.1
    • 次级要素3.2

  • li元素的Fyi仅作为ul或ol元素内的列表项有效。1。请努力,至少提供可以实际运行的代码片段,不要抛出语法错误。2.把支票完全拿掉,这是胡说八道<代码>$(this).children(“ul”).toggleClass(“toggle”)
    作为处理程序函数中的唯一一行,没有任何ifs,可以完成这项工作。它做得不好。我希望在单击li和span元素时使用此处理程序函数。如果您删除了复选框,您将通过单击任何子元素来切换类…那么您应该在问题中提供所需的最低代码,@CBroe comment对于您提供的代码是正确的。请阅读如何根据li元素创建Fyi。li元素仅作为ul或ol元素内的列表项有效。1。请努力,至少提供可以实际运行的代码片段,不要抛出语法错误。2.把支票完全拿掉,这是胡说八道<代码>$(this).children(“ul”).toggleClass(“toggle”)
    作为处理程序函数中的唯一一行,没有任何ifs,可以完成这项工作。它做得不好。我希望在单击li和span元素时使用此处理程序函数。如果您删除了复选框,您将通过单击任何子元素来切换类…那么您应该在问题中提供所需的最低代码,@CBroe comment对于您提供的代码是正确的。请阅读如何创建一个