jquery遍历子元素无效

html页面动态生成代码如下图所示:

img

我想要实现点击ul下的第二个li标签弹出提示,当时没有效果,js代码如下:

$('#multi_module_0 li').eq(1).on("click", function(){ //这里不用$('ul li')的原因是上面还有其他ul标签
                    alert("您不具有该权限!");
                });

为什么点击后没有效果?

你console.log($('#multi_module_0 li').eq(1).length);看看是不是能获取到元素输出1
如果输出0 可能li是页面加载完成之后再动态生成的
可以用委托式的事件绑定方式

$(document).on("click",'#multi_module_0 li:eq(1)', function(){
    alert("您不具有该权限!");
});

1.检查元素, 鼠标点击的时候 是否作用在li上, 可能有其他元素覆盖
2.检查$('#multi_module_0 li').eq(1) 是否能匹配到 元素对象

用ul上面的class

img

    $(".layui-side ul li").eq(1).on("click", function (e) {

        alert("段落被点击了。");
    })

少个 层级 吧 你要获取 li 得从 ul上获取

我看了一下这么多人回答的情况,觉得应该是菜单渲染的问题,无论是动态还是拼接生成的菜单,都应该保证在菜单渲染后执行你的代码,页面的ready和局部内容的ready是不一样的概念,所以可以放在菜单初始化后那里执行代码:


$('#multi_module_0 li').eq(1).on("click", function(){ //这里不用$('ul li')的原因是上面还有其他ul标签
                    alert("您不具有该权限!");
                });



直接使用 .click 绑定点击事件

1.直接给每个li绑定一个事件
2.里面传一个当前的用户id出来
3.在这个事件里面写判断逻辑

function changeItem(id){
  if(id != 22){
      alert("您不具有该权限!");

  }
}


应该是数据还没渲染完,DOM还没生成,click事件在DOM生成后试下