jQuery移除指定ID的li元素在Chrome中失效,求原因
排查思路与解决办法
先给你个最直接的修改方案,把代码换成直接用ID选择器,别用属性选择器试试:
$("#" + id.substring(4)).remove();
原因是Chrome对属性选择器的解析比Firefox更严格,比如如果id.substring(4)返回的内容里有特殊字符(比如.、#或者空格),用[id='xxx']这种写法很容易匹配失败,而直接用#xxx的话,jQuery会自动处理ID里的特殊字符转义,兼容性更好。
如果改完还是不行,按这几个步骤排查:
- 先在Chrome控制台里打印
console.log(id.substring(4)),看看拿到的是不是目标li的真实ID,会不会在Chrome里id变量的值和Firefox不一致?比如有些场景下浏览器对元素ID的大小写处理有差异? - 验证选择器能不能找到元素:在控制台里直接执行
$("#selector").find("li[id='" + id.substring(4) + "']"),看返回的jQuery对象长度是不是1,要是0就说明选择器根本没匹配到元素。 - 检查点击事件有没有触发:在按钮的点击回调里加个
console.log('按钮触发了'),看看Chrome控制台有没有输出,排除事件绑定失败的问题。
内容的提问来源于stack exchange,提问作者sunics
相关产品推荐
相关产品推荐

