Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Javascript Jquery嵌套的li和ul标记未单击_Javascript_Html_Jquery_Css - Fatal编程技术网

Javascript Jquery嵌套的li和ul标记未单击

Javascript Jquery嵌套的li和ul标记未单击,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我有一个这样的列表,基本上就像一棵树。我正在使用这个jquery库 我将其与一个类结合起来定义选择。这就是它的样子 我使用的脚本基本上只是选择具有“名称中可选”的类,该类在页面加载时工作。但是,当创建动态列表元素时,它不起作用。我也尝试过使用body选择器,虽然非“folders”类可以工作,但在创建动态元素之后,嵌套的ul元素似乎不再工作了 这是我的一个问题。因为Drag的库是托管的,所以我将src包含在脚本标记中 $(“.li可选”)。单击(函数(){ if($(this).hasCla

我有一个这样的列表,基本上就像一棵树。我正在使用这个jquery库 我将其与一个类结合起来定义选择。这就是它的样子

我使用的脚本基本上只是选择具有“名称中可选”的类,该类在页面加载时工作。但是,当创建动态列表元素时,它不起作用。我也尝试过使用body选择器,虽然非“folders”类可以工作,但在创建动态元素之后,嵌套的ul元素似乎不再工作了

这是我的一个问题。因为Drag的库是托管的,所以我将src包含在脚本标记中

$(“.li可选”)。单击(函数(){
if($(this).hasClass('active')){
$(“.li可选”).removeClass('active')
}
否则{
$(“.li可选”).removeClass('active')
$(this.addClass('active'))
}
});

    路径
      开始路径底部 开始路径MID
    • BeginingPathTop
    • 传送带路径 路径1
    资产1 冲突 主对象
  • 占位符\u指示器
  • 摄像锁
  • 第1层
    • Layer1\u顶部
    • Layer1\u MAIN
  • 第2层
  • 第3层
  • 第4层
  • 第5层
  • 第6层
  • 占位符
  • 背景

您需要使用下面的代码为动态创建的元素绑定click事件处理程序

$(document).on('click',".li-selectable", function () {
  
    /*if ($(this).hasClass('active')) {
        $(".li-selectable").removeClass('active')
    }
    else {
        
            $(".li-selectable").removeClass('active')
            $(this).addClass('active')
    }*/
    //improvement in above script
     $(this).toggleClass('active');
     $(".li-selectable").not(this).removeClass('active')
});

这回答了你的问题吗?我刚试过,但似乎还是不行。如果您想看一看,我提供了一个JSFIDLE。您的FIDLE给出了错误VM115引导。min.js:6未捕获类型错误:无法读取未定义的属性“fn”,您需要事件委派,因为
$(“li”)。单击
仅适用于当时存在的元素。但是,您的代码有一个
返回e.stopPropagation()init:
which。。好。。停止click事件的传播,因此父对象上的click处理程序(在document.on(click.li可选))不会触发,因为事件已停止。移除
返回e.stopPropagation()并且它可以工作。或者更好的方法是,将代码添加到
init:
中的事件处理程序
\u fn
事件委派的替代方法是在将元素添加到文档后添加事件-这就是
init:
中的
expList
正在做的事情-在添加元素后调用expList(),将事件添加到新元素中。你也可以在你的代码中做同样的事情。我只是添加了一个js提琴,并包含了你发布的代码,无论是否使用动态创建的标记,它似乎都不起作用。我开始怀疑它是否与可折叠脚本有关。如果您想看的话,我把它放在JSFIDLE顶部附近的页面上。看起来,
li可选
的单击事件已被您使用的第三方库覆盖,因为当我删除
$('.list').expList()时从它工作的脚本。看到这个了吗