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