今天为了解决一个bug折腾了好几个小时,结果竟然是小小的removeClass惹的祸
项目是微信企业号开发,企业号中有一个应用的页面是用js+css控制li模拟radio的选中状态,其中移除li的选中状态用到了obj.removeClass(‘active‘);
当时有两个li标签,经过多次测试发现,当第二次选中某一个li标签时(假设有A,B两个li标签,当点击A之后点击B再点击A的时候,或者连续点击A的时候),获取不到此标签li[class=‘active‘].在我和PM两个人近乎崩溃的情况下发现一个小的细节,当A点击之后再点击B的时候A的class多出来一个空格会变为class=" "(其实刚开始测试就发现了这点,只是没有往深处想),会不会就是这个空格导致最后查询class=active时没有找到?为了证明这个疑问,我提出换一种写法,改用obj.attr(‘class‘,‘‘)的方式.再次测试,问题解决了!!!
结论:class有一个空格的问题在浏览器中也存在,但是用浏览器测试的时候却没有问题,只有在微信界面才有,所以在此提醒微信开发的朋友:微信界面最好避免使用jQuery的removeClass()方法.反正我是记住了!
时间: 2024-12-25 01:54:58