JSLite - 核心方法


如有疑問歡迎到這些地方交流,歡迎加入JSLite.io組織團體共同開發!

$()

選擇器使用的是瀏覽器自帶的方法的 document.querySelectorAll 接口,支援標準的 CSS 選擇器,沒有使用jQuery作者John Resig開發的DOM選擇器引擎(Dom Selector Engine) Sizzle 。 目前 IE8/9及Firefox/Chrome/Safari/Opera 的最新版本已經支援 querySelectorAll 。
$(selector) //⇒ 選擇節點
$("") //⇒ 產生節點
$("htmlString") //⇒ 產生
JSLite(function($){ .. . }) //⇒ 相當於ready
$("#box") //⇒ 返回节点数组  //⇒ [<div>…</div>]
$("<div></div>") //⇒ 生成div节点
//JSLite(func) 相当于ready
JSLite(function($){
    console.log("在节点加载完成之后执行")
})
//$(func) 相当于ready
$(function($){
    console.log("在节点加载完成之后执行")
})

JSLite()

$()相同。

noConflict

noConflict() 方法讓渡變數 $ 的 JSLite 控制權,解決兩個函式庫之間的$衝突。
此方法釋放 JSLite$ 變數的控制。
此方法也可用於為 JSLite 變數規定新的自訂名稱。

常規

$.noConflict();
JSLite(document).ready(function($) {
// 使用 JSLite $ 的代码
});
// 使用其他库的 $ 的代码

映射回原始的物件

$ 引用的物件映射回原始的物件:

JSLite.noConflict();
JSLite("div p").hide(); // 使用 JSLite
$("content").style.display = "none";    // 使用其他库的 $()

恢復使用別名

恢復使用別名$,然後建立並執行一個函數,在這個函數的作用域中仍然將$ 作為JSLite的別名來使用。在這個函數中,原來的 $ 物件是無效的。這個函數對於大多數不依賴其他函式庫的插件都很有效:

JSLite.noConflict();
(function($) { 
  $(function() {
    // 使用 $ 作为 JSLite 别名的代码
  });
})(JSLite);

... // 其他用 $ 作为别名的库的代码

簡寫

#可以將JSLite.noConflict() 與簡寫的ready 結合,使程式碼更緊湊

JSLite.noConflict()(function(){
    // 使用 JSLite 的代码
    console.log($("div"))
});

建立別名

建立一個新的別名用以在接下來的庫中使用JSLite 物件:

var j = JSLite.noConflict();
j("#box").hide();  // 基于 JSLite 的代码
$("content").style.display = "none";    // 基于其他库的 $() 代码

新的命名空間

完全將JSLite 移到一個新的命名空間:

var dom = {};
dom.jslite = JSLite.noConflict(true);

結果:

dom.jslite("div p").hide();  // 新 JSLite 的代码
$("content").style.display = "none";    // 另一个库 $() 的代码
JSLite("div > p").hide();   // 另一个版本 JSLite 的代码