1. 程式人生 > >在jquery裏踩過的坑

在jquery裏踩過的坑

作用 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裏踩過的坑