2011-10-13 78 views
12

比方說,我想建立一個非依賴的JavaScript框架/腳本。是否有利用jQuery的驚人類和元素選擇功能輕量級替代jQuery的類/ ID選擇

$('.this') or $('#this') or $('div', '.this') 

,而不依賴於jQuery的或使用jQuery,如果它是可用的,但如果沒有,它的工作原理沒有它的方法嗎?我已經搜索了這個高低。也許我,因爲我已經得到最接近的搜索不正確的是:

Selecting elements without jQuery

然而,這並不像深入,我想或類似的,因爲我想jQuery的。我曾經想過通過jQuery源代碼挖掘並將它拆分出來並使用它,但是我希望有人已經這樣做了,而我只是在錯誤的地方尋找並且別人知道它。

更新

這已在幾個方面回答,並感謝您的快速回復。我正在用錯誤的方法搜索。我終於來到:https://github.com/ded/qwery

不過這裏這個答案做這項工作完美: Lightweight alternative to jQuery for class/id selecting

+0

我不知道爲什麼你不能只使用jQuery?直到像這樣的功能以標準方式(HAH!)嵌入到瀏覽器中,您就會被困在使用像jQuery這樣的工具庫中。 – SoWeLie

+0

這是一個腳本,你不需要依賴jQuery,但可以使用它(如果可用)。並不是每個人都使用jQuery,我想挖掘這個源代碼,在我開始編寫代碼之前,我希望已經有了這樣的東西。 – Nijikokun

+1

如果你確實需要使應用程序輕量級,那麼不要使用內置的jQuery。在網上搜索一個專爲dom導航和操作而設計的框架。這裏有幾十個框架,我確信有一個框架可以很好地滿足你的需求。 –

回答

5

在一切,但IE6和IE7,你可以使用document.querySelectorAllsomeElement.querySelectorAll執行類似的選擇功能。

更新更多細節:

它看起來像ZeptoJS執行以下步驟。這用來$$(document, '#myid')$$(document, '.myclass')$$(document, 'div')快捷功能和慢速搜索$$(document, 'div > .myclass')

var classSelectorRE = /^\.([\w-]+)$/, 
    idSelectorRE = /^#([\w-]+)$/, 
    tagSelectorRE = /^[\w-]+$/; 

$$ = function(element, selector){ 
    var found; 
    return (element === document && idSelectorRE.test(selector)) ? 
    ((found = element.getElementById(RegExp.$1)) ? [found] : []) : 
    Array.prototype.slice.call(
     classSelectorRE.test(selector) ? element.getElementsByClassName(RegExp.$1) : 
     tagSelectorRE.test(selector) ? element.getElementsByTagName(selector) : 
     element.querySelectorAll(selector) 
    ); 
} 
+0

然而,在'slice.call'之前有一個語法問題,你缺少'[] .' – Nijikokun

+0

這是真的。這是一個剪切和粘貼。 Zepto定義了'emptyArray = [],slice = emptyArray.slice'。我會更新上面的代碼。 –

3

你看着zepto.js?你仍然依賴於一個框架,但它重量更輕:大約5kb而不是31kb。

12

這個問題的答案: 「我需要一個小JS庫......」 就是這個網站:http://microjs.com/

具體而言,你正在尋找一個選擇器引擎:

http://microjs.com/#css

+0

好收集,整齊地由microjs.com組織。不知道他們爲什麼不包括Sizzle(比microjs小一些),但肯定有一些有價值的選擇! –

+0

我發現Qwery,我知道它在那裏,它做的工作,比Sizzle小。感謝您的建議@GregPettit – Nijikokun

+0

我的榮幸。一定要'接受'DA的答案,因爲這對你最有幫助。 :) –

1

MicroSelector。甚至比Zepto更小更快,它比小於JQuery的Sizzle小。

2

只需嘗試jBone,用於Events和DOM操作的庫。 jBone比jQuery/Zepto具有更好的性能,更小的尺寸和全面支持所有選擇器,事件API的功能。