JQuery學習總結一 —— JQ-tabs的實現
最近面試的時候被問到有沒有看過JQuery的原始碼,本人確實看過,然而什麼都沒有記住,所以看過並沒有什麼X用,重要的,還是要動手寫程式碼。
JQuery-tabs實現
網站地址後#?的區別
我們經常可以看到網站後面帶著一些引數,比如你用搜索引擎搜尋處結果的時候,網址中會帶有各種各樣的引數,下面我就根據我的理解來解釋一下這些引數的作用
?: 通常表識在進入這個網址之前需要傳的引數值,所在網址會根據該引數值來做一些處理從而實現
# : 通常指頁面內部的跳轉,不會重新整理頁面,只是區域性的內容的變化(例如a標籤的href=’id’)JQuery
JQuery-ajax可以通過load來呼叫靜態頁面從而避免單純的複製貼上,而JQuery強大的DOM操作也大大擴大了每一個template的可用性。
load(URL, callback)
由ajax載入的靜態頁面可以很好的相容當前頁面的樣式,但該部分與動態新增的元素一樣,在相容頁面的js操作時,存在js作用無效的問題。
問題關鍵在於HTML的順序執行,在瀏覽器渲染頁面的時候,會從上往下依次渲染,當渲染到load函式時,瀏覽器不會等待load完畢再借著執行,而是在解析template的同時,繼續往下渲染,這個過程幾乎是同步的,所以渲染出來的DOM結構,並沒有相容頁面下面的JS。
解決辦法可以考慮在JS部分新增一個計時器,setTimeout(function(){}, 1); 匿名函式中寫需要load相容的js即可JQuery-tabs
考慮到使用者體驗,tabs切換用#而不用?
首先你需要一個很好的拿到頁面引數的函式function getURL(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}借用正則物件RegExp可以很快的解析出parameter
var tmp = getURL('data');
if(tmp == "1"){
function1();
}else{
function2();
}那麼頁面首次載入的時候就會根據#data的值來做相應處理
<a href="#1">Click me</a>
那麼可以在這個a標籤的click事件中新增function1函式即可。