在jquery裏踩過的坑
阿新 • • 發佈:2017-08-29
作用 inpu settime 實時 var cati doc src code
自己犯過的錯
一、parent()和parents()
parent(selector)指的是直系父元素
parents(selctor)指的是沿DOM向上查找所有父元素
二、ie8中兼容jquery的input事件(jquery1.11.3版本)
需求是實時監聽輸入框值變化,用的input[event],做兼容性測試時發現在ie8下沒有作用,好像是ie9以下沒有input事件,解決方案:同時使用 input 和 兩種事件。
$("input").on("input propertychange",function(){ ... })
三、寫十秒倒計時
原來用的是setInterval,然後清除掉,覺得並不適合。這次用setTimenout寫的,會在效率和寫法上更合適。
//設定倒數秒數 var t = 10; //倒計時 function time(){ t -= 1; document.getElementById(‘times‘).innerHTML= t; if(t==0){ location.href=‘https://www.cnblogs.com/‘; } setTimeout("time()",1000); } time();
四、兼容html5
寫完之後測試不兼容ie8,特別是@media,心塞啊
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
解決方案,來自bootstrap。加的時候發現這段代碼需要加載樣式之後。
五、使用jquery的e.stopPropagation()無效
div.div1.事件1
div.div2.無事件
div.div3.事件3
層級和事件關系如上。需求是點擊div2的時候沒有任何事件,點擊div1和div3分別有事件。
直接寫
$(".div3").on("click",function(){e.stopPropagation()});
e.stopPropagation()並沒有生效。最後實踐得出:
$(".div1").on("click",function(){...}); $(".div1").on("click",".div3",function(){e.stopPropagation()});
。。。還有問題TT
六、監控窗口的滾動(jquery1.11.3版本)
正常使用$(document).on("scroll",function(){})即可,但是測試發現在ie8下無效,改成$(window).on("scroll",function(){}),就好了,不是很理解。
在jquery裏踩過的坑