Time of Update: 2018-12-07
事件代理的實現原理很簡單:利用瀏覽器中事件的冒泡(event bubbling)和事件來源(target || srcElement)。 某些情境中特別適合使用事件代理,它有如下好處需要管理的handler更少。佔用的記憶體更少(建立的駐留在記憶體中的handler少了)。DOM元素與代碼更少的綁定。DOM變更後(如添加dom節點)無須重新綁定事件處理器。它也有如下不足並非所有的事件都能冒泡,如load, change, submit, focus,
Time of Update: 2018-12-07
事件對象的擷取很簡單,很久前我們就知道IE中事件對象是作為全域對象( window.event )存在的,Firefox中則是做為控制代碼( handler )的第一個參數傳入內的。所以一行代碼就可以搞定,var evt = window.event || arguments[0];下面分三種添加事件的方式討論1,第一種添加事件的方式,直接在html的屬性中寫JS代碼<div onclick="alert(4);">Div1
Time of Update: 2018-12-07
jQuery的屬性模組提供了如下方法attr/removeAttrprop/removeProp(1.6)addClass/removeClass/toggleClass/hasClassval 提供了幾個靜態方法以支援JQ對象以上方法,如jQuery.attr 對應 attr,即jq對象的attr方法內部調用了jQuery.attr。其次還有jQuery.removeAttr -> removeAttrjQuery.prop ->
Time of Update: 2018-12-07
擷取計算後的元素樣式,IE有currentStyle,而標準瀏覽器用getComputedStyle。IE9後也支援getComputedStyle了。發現以前寫的css方法不好用了,在chrome中返回的結果與其它瀏覽器不同。重現如下<!DOCTYPE HTML><HTML> <HEAD><meta charset="utf-8" /><title>css opacity</title><style
Time of Update: 2018-12-07
我們知道擷取元素的實際寬高在IE中可以使用currentStyle屬性。但如果沒有顯示的去設定元素的寬高,那麼使用該屬性將擷取不到,擷取的值為auto。如下<div>abcd</div><script>var div = document.getElementsByTagName('div')[0];alert(div.currentStyle.width);alert(div.currentStyle.height);</script>IE6/7
Time of Update: 2018-12-07
使用jQuery刪除事件(或稱解除事件綁定)有三個函數:unbind、die和undelegate。這三個方法都依賴於未公開的jQuery.event.remove(後續使用.remove簡寫)。此為刪除事件的核心方法。 .remove 所作的事情與上一篇提到的.add 剛好相反。且與.add中的處理代碼一一對應,即 .add 中有多少種添加事件的方式.remove就有對應的刪除方式。 .remove 定義了四個參數 elem, types, handler, pos
Time of Update: 2018-12-07
為了敘述簡單,這裡僅拿width樣本。情景一,元素style屬性設定了width/height<div style="width:100px;">test<div><script>var div =
Time of Update: 2018-12-07
click方法可以用來類比使用者點擊。有的瀏覽器中所有元素都具有click方法,有的瀏覽器則沒有。如下 IE6/7/8/9/Opera12/Firefox5/Chrome21Safari5INPUT[type=text]INPUT[type=password]INPUT[type=radio]INPUT[type=checkbox]INPUT[type=button]INPUT[type=submit]INPUT[type=image]INPUT[type=hidden]INPUT[type=r
Time of Update: 2018-12-07
前些天記錄了java中for迴圈取map,發現用jquery的each一樣可以取map(我稱之為js的map,不要較勁),且順序和map中順序一致。廢話少說,看代碼var map = {地名: ["北京","天津","上海"],民族: ["漢族","藏族","維吾爾族"]};$.each(map,function(key,values){console.log(key);$(values).each(function(){console.log("\t" +
Time of Update: 2018-12-07
在網上找了半天沒找到,甚是鬱悶。還是墨墨厲害,貼在此處。以備後用。瀏覽器有不同的模式,標準模式、怪異模式(寬松模式)。不同的模式下對css的支援也不一樣,如在標準模式下,瀏覽器根據規範表現頁面;在怪異模式下則以比較寬松的向後相容的方式展現頁面。即怪異模式經常模擬老式瀏覽器(MS IE4,NetScape Navigator4)的行為以防止老站點無法工作。多數情況下要在每個頁麵包含完整的DOCTYPE,並且使用HTML時選用嚴格的DTD,如下<jsp:directive.page
Time of Update: 2018-12-07
jQuery的serialize模組中有個r20正則var r20 = /%20/g,jQuery.param方法中會將所有的"%20"轉成"+",即提交資料前,資料中如果包含空格,那經過encodeURIComponent後,空格會轉成"%20"encodeURIComponent(' ') === '%20'; // true最後需要將"%20"轉換成"="再Post提交。這樣背景程式接受到的才是真正的空格。 關於
Time of Update: 2018-12-07
樣本<!DOCTYPE HTML><HTML> <HEAD><meta charset="utf-8" /><title>僅img元素建立後卻不添加到文檔中會執行onload事件</title> </HEAD> <BODY><script>var img = document.createElement('img');img.src =
Time of Update: 2018-12-07
IE6/7中不能通過setAttribute設定元素的style屬性,也不能通過getAttribute擷取元素的style屬性值。它擷取的是一個style對象。 如下<div style="color:blue">div test</div><script type="text/javascript">var div1 = document.getElementsByTagName('div')[0];// 擷取style屬性值var val = div1.
Time of Update: 2018-12-07
上一篇提到jQuery中添加事件提供給用戶端程式員的介面方法有很多bind/click等,但其實現的核心方法是jQuery.event.add。這篇看看其源碼,這個add定義如下(省略大部分)add: function( elem, types, handler, data ) {if ( elem.nodeType === 3 || elem.nodeType === 8 ) {return;}
Time of Update: 2018-12-07
如下<!DOCTYPE HTML><head><meta charset="utf-8" /></head><body><input type="checkbox" /><input type="checkbox" checked/><script>var checkboxs =
Time of Update: 2018-12-07
給大家說個故事吧,其實這也會我曾經的經曆,也教會了我不少的東西。曾經去過兩個不同的公司,我們就分別稱之為A和B公司吧。A公司是一個外企的分部,其實也是算不上,就是一個辦事處了。在A公司裡面,每天都是非常的忙,周圍的同事也是忙的團團轉。儘管如此,但是大家相處的比較好,或者換句話說,還是挺有人情味的,不是那種讓你感覺到:這地方除了是上班的地方,啥都不是的冷冰冰的地方。在A公司的時候,感覺大家都是比較的拚命的,而且大家都是比較窮的,還有一點很重要的就是,A公司的裡面的同事幾乎都是外地人。大家都有沒有顯
Time of Update: 2018-12-07
Facade Pattern
Time of Update: 2018-12-07
多數情況下隱藏(設定display:none)一個元素,無需依次將其內的所有子項目都隱藏。非要這麼做,有時會碰到意想不到的bug。如下1,兩個div,d1中包含d22,d1,d2都設定了absolute或relative3,隱藏d14,隱藏子項目d25,顯示d1這時IE6/7 and IE8/9/10(IE7模式)中會發現,子項目d2也能顯示出了(別忘了,d2被display:none
Time of Update: 2018-12-07
文章目錄 $.when的實現 Deferred對象是由$.Deferred構造的,$.Deferred被實現為簡單原廠模式。它用來解決JS中的非同步編程,它遵循 Common Promise/A 規範。實現此規範的還有 when.js 和
Time of Update: 2018-12-07
公司用的是Win7,家裡用的Mac OSX,又有iPad,iPhone。通過iClond可實現Safari的書籤同步。這樣在任何一個裝置上添加了一個網址到書籤裡,其它裝置都能保持更新。 首先需要做的是註冊一個apple id。 Win7下需要安裝一個iClond控制台,這裡提供下載。雖然一直下一步就哦了。 安裝完,使用apple id登陸的介面如下 Mac