Javascript li单击侦听器未触发,因为使用e.stopPropagation进行了基线div
我想触发动态生成的列表项的单击事件。 列表所在的div有一个click事件来停止ropagation,因此下拉列表不会通过单击列表项来切换。 如果没有StopRopagation,单击仍在工作,但我的下拉列表已断开 有没有机会让它工作起来Javascript li单击侦听器未触发,因为使用e.stopPropagation进行了基线div,javascript,html,jquery,Javascript,Html,Jquery,我想触发动态生成的列表项的单击事件。 列表所在的div有一个click事件来停止ropagation,因此下拉列表不会通过单击列表项来切换。 如果没有StopRopagation,单击仍在工作,但我的下拉列表已断开 有没有机会让它工作起来 //下拉脚本 $('.nav下拉列表')。单击(函数(){ 让togglele=$(this.find('.drop-down list'); $('.drop-down list').not(toggleEle.hide(); 切换ele.slideTog
//下拉脚本
$('.nav下拉列表')。单击(函数(){
让togglele=$(this.find('.drop-down list');
$('.drop-down list').not(toggleEle.hide();
切换ele.slideToggle();
});
$('.下拉列表')。单击(函数(e){
e、 停止传播();
});
//添加实时搜索
风险值货币=[‘欧元’、‘美元’、‘英国’、‘英国’、‘PND’、‘美国’];
添加LiveSearchToElement($(“#货币过滤器”)、货币、“更改货币”);
函数addLiveSearchToElement(ele,arr,liClass){
元件键控(函数(){
//获取ul列表
let list=$(this.next();
//存储用户输入
让输入=$(this.val();
list.empty();
$。每个(arr,函数(i,值){
如果(输入!=''){
if(value.toLowerCase().indexOf(input.toLowerCase())!=-1){
追加(`li class=“${liClass}”>${arr[i]}`);
}
}否则{
追加(`${value} `);
}
});
});
如果(liClass!=''){
console.log(“Doin it”);
$('ul')。在('click','li.${liClass}`,函数()上{
log(“你好…”);
});
}
}
美元货币
-
项目1
-
项目2
问题是您将这些类附加到keyup
上,但您将这些onclick
放在函数keyup
之外,因此,它们永远不会被执行。试试这个:
//添加实时搜索
风险值货币=[‘欧元’、‘美元’、‘英国’、‘英国’、‘PND’、‘美国’];
添加LiveSearchToElement($(“#货币过滤器”)、货币、“更改货币”);
函数addLiveSearchToElement(ele,arr,liClass){
元件键控(函数(){
//获取ul列表
let list=$(this.next();
//存储用户输入
让输入=$(this.val();
list.empty();
$。每个(arr,函数(i,值){
如果(输入!=''){
if(value.toLowerCase().indexOf(input.toLowerCase())!=-1){
追加(`li class=“${liClass}”>${arr[i]}`);
}
}否则{
追加(`${value} `);
}
});
如果(liClass!=''){
console.log(“Doin it”);
$(document).on('click','li.${liClass}',function(){
log(“你好…”);
});
}
});
}
美元货币
-
项目1
-
项目2
我将事件监听器添加到父级ul
,以便将其下降到匹配的选择器li。${liClass}
$("ul").on('click', `li.${liClass}`, function() {
console.log("Hello...");
});
这回答了你的问题吗?嘿,拉维,我用“$(文档)替换了绑定点击事件的代码。在('click',
li.${liClass}
,function(){”上,但仍然没有启动。这可能与选择器li.${liClass}有关
。你的li元素在你发布的代码中没有任何类。这是因为你必须首先键入一些内容,以便显示新的类,因为它不在标准列表中。明白了。你需要将事件侦听器添加到ul
。请参阅我的答案。感谢快速回答,但不幸的是我忘记了一个代码部分,它是引发问题。参考底图div的click事件中有对stopPropagation的函数调用,这需要下拉列表不通过单击菜单项进行切换。-我更新了代码非常感谢Ravi!就是这样!所以要明白:以前的解决方案不起作用,因为事件一直在冒泡它的父事件,直到'docu'它的父级阻止了所有单击事件冒泡。使用此解决方案,冒泡只需持续到'ul'?我尝试并$(文档)。在(当我通过执行$('body')将某个内容附加到正文中时,单击可正常工作。追加(
。当您将其应用于附加到的父级时,我会反复尝试并单击works,在您的案例中,这是ul
。