Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/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
Javascript li单击侦听器未触发,因为使用e.stopPropagation进行了基线div_Javascript_Html_Jquery - Fatal编程技术网

Javascript li单击侦听器未触发,因为使用e.stopPropagation进行了基线div

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

我想触发动态生成的列表项的单击事件。 列表所在的div有一个click事件来停止ropagation,因此下拉列表不会通过单击列表项来切换。 如果没有StopRopagation,单击仍在工作,但我的下拉列表已断开

有没有机会让它工作起来

//下拉脚本
$('.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