html页面动态生成代码如下图所示:
我想要实现点击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
$(".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生成后试下