<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Lesson-5 === 這個版本新增6個方法,find(),first(),last(),eq(),get(),ajax 先給出代碼 ```javascript find : function(selector) { if(!selector) return; var context = this.selector; return new Kodo(context + ' ' + selector); }, first : function() { return new Kodo(this[0]) }, last : function() { var num = this.length - 1; return new Kodo(this[num]); }, eq : function(num) { var num = num < 0 ? (this.length - 1) : num; console.log(num); return new Kodo(this[num]); }, get : function(num) { var num = num < 0 ? (this.length - 1) : num; console.log(num); return this[num]; } ``` 我們要仔細分辨下,這4個方法在jQuery中返回的都是什么對象?到底是dom對象還是jQuery對象. 明白了這個后就很容易能寫出這4個方法 ```javascript find : function(selector) { if(!selector) return; var context = this.selector; return new Kodo(context + ' ' + selector); } ``` 首先find, 我們知道一般都會這樣寫 $('div').find('span') 查找div下的span,返回的是span數組對象,而不是原生的dom對象 那么我們就可以換個思路,因為我們能拿到 $('div') 這個selector對吧? 也就是 div 既然又要find('span'),我們的selector就可以寫成 ('div span'),之后直接返回新的數組對象不就好了嗎?? `var context = this.selector;` 先緩存當前的selector上下文,之后拼接我們find的selector 所以最后return 就變為 `new Kodo(context + ' ' + selector);` 雖然效率不一定高,總是一種解決思路不是嗎? ```javascript first : function() { return new Kodo(this[0]) }, last : function() { var num = this.length - 1; return new Kodo(this[num]); }, eq : function(num) { var num = num < 0 ? (this.length - 1) : num; console.log(num); return new Kodo(this[num]); }, get : function(num) { var num = num < 0 ? (this.length - 1) : num; console.log(num); return this[num]; } ``` find方法比較難解決,之后這4個就很容易了,first,last,eq,分別返回的都是封裝后的對象,只有get返回的是原生 dom對象. 我們根據之前的思路,直接取數組對象的index,return下新的即可,是不是很簡單? :) 之后是ajax部分 之前說過之所以,可以用`$.ajax`直接調用,是因為可以把方法直接掛在在構造函數上,作為靜態方法 所以我們只需要寫好ajax最后把你想要公開的接口放在Kodo上即可 ```javascript Kodo.get = function(url,sucBack,complete) { var options = { url : url, success : sucBack, complete : complete }; ajax(options); }; Kodo.post = function(url,data,sucback,complete) { var options = { url : url, type : "POST", data : data, sucback : sucback, complete : complete }; ajax(options); }; function ajax(options) { var defaultOptions = { url: false, //ajax 請求地址 type : "GET", data : false, success: false, //數據成功返回后的回調方法 complete: false //ajax完成后的回調方法 }; for (var i in defaultOptions) { if (options[i] === undefined) { options[i] = defaultOptions[i]; } } var xhr = new XMLHttpRequest(); var url = options.url; xhr.open(options.type, url); xhr.onreadystatechange = onStateChange; if (options.type === 'POST') { xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } xhr.send(options.data ? options.data : null); function onStateChange() { if (xhr.readyState == 4) { var result, status = xhr.status; if ((status >= 200 && status < 300) || status == 304) { result = xhr.responseText; if (window.JSON) { result = JSON.parse(result); } else { result = eval('(' + result + ')'); } ajaxSuccess(result, xhr) } else { console.log("ERR", xhr.status); } } } function ajaxSuccess(data, xhr) { var status = 'success'; options.success && options.success(data, options, status, xhr) ajaxComplete(status) } function ajaxComplete(status) { options.complete && options.complete(status); } } ``` 在這我就不細講ajax的具體過程,我也實現了一個比較簡單的ajax,就公開了get和post方法.大家可以實現一個更加復雜好用的ajax替換我這段代碼 你說你都耐心的翻到這了? 不給我一個star說的過去么你?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看