2012-07-03 57 views
3

我用用jQuery工作並使用zepto.js:Viewport和Lazyload插件?

現在,我使用zepto.js的jQuery和課程,而不是現在的插件均通過了以下錯誤。

Uncaught ReferenceError: jQuery is not defined

如果我更新從})(jQuery);兩個插件})(Zepto);以下錯誤上來......

Uncaught TypeError: Cannot read property ':' of undefined

上任何想法?是否有可能使這些插件與Zepto一起使用? Zepto與Jquery幾乎沒有相同之處,只是沒有舊的瀏覽器兼容性和額外的觸摸事件?

預先感謝您。

馬特

+0

還是沒有任何人知道的圖像無依賴,lazyload的JavaScript?我只想爲我的網站使用一個好的,有效的lazyload腳本,並使用zepto而不是jquery。 – matt

+0

因爲我也與Zepto一起工作,所以我會看看。無論如何,視口選擇器都會引起一些愛,並且便利方法將從Lazy Load中移除,因爲我感覺大多數人不使用它們(並且它們無論如何都可以在Viewport插件中使用)。 –

回答

3

,導致該錯誤的代碼行似乎是:

.extend($.expr[':'], { 

jQuery使用名爲灒自己的CSS樣式選擇評估。除了允許您使用$('#id .cls1 .cls2, #otherid')和標準的CSS僞選擇器外,它還支持使用自定義選擇器進行擴展,例如此插件提供的內置:visible選擇器或:above-the-fold選擇器。

由於現代手機瀏覽器支持CSS選擇的本地document.querySelectorAll函數,因此不需要像Sizzle這樣的庫,從而節省了大量的JavaScript。 (這就是爲什麼我們喜歡Zepto。)副作用是這些自定義選擇器不受支持,並且$.expr不存在。任何依賴這些的行,包括插件中的行都將失敗。

好消息是,這些都是方便的選擇器,您可能只是能夠將它們從腳本中刪除。如果您不想通過這種方式查找摺疊上方和下方的元素,則可以將它們從代碼中刪除。您還需要解決庫稱爲$this.is(":visible")的行,但除此之外,我沒有真正看到jQuery特定的任何內容。