3

以前はjQueryを使用していて、使用していました

私は現在、jQuery の代わりにzepto.jsを使用しています。もちろん、次のエラーによって両方のプラグインを使用しています。

Uncaught ReferenceError: jQuery が定義されていません

両方のプラグインを から に更新する})(jQuery);})(Zepto);、次のエラーが表示されます …</p>

キャッチされていない TypeError: 未定義のプロパティ ':' を読み取ることができません

それに関するアイデアはありますか?これらのプラグインを Zepto で動作させることは可能ですか? 古いブラウザとの互換性と追加のタッチイベントがないだけで、Zepto は Jquery とほぼ同じではありませんか?

前もって感謝します。

マット

4

2 に答える 2

3

エラーの原因となっている行は次のようです。

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

jQuery は、Sizzle と呼ばれる独自の CSS スタイルのセレクター エバリュエーターを使用します。標準の CSS 擬似セレクターを使用できるようにするだけでなく、組み込みセレクターやこのプラグインによって提供されるセレクター$('#id .cls1 .cls2, #otherid')などのカスタム セレクターによる拡張をサポートします。:visible:above-the-fold

最新のモバイル ブラウザは CSS 選択のネイティブdocument.querySelectorAll関数をサポートしているため、Sizzle のようなライブラリは必要なく、JavaScript を大幅に節約できます。(これが私たちが Zepto を気に入っている理由です。) 副作用は、これらのカスタム セレクターがサポートされて$.exprおらず、存在しないことです。プラグインのその行を含め、これらに依存するすべての行は失敗します。

幸いなことに、これらは便利なセレクターであり、スクリプトから切り取ることができる場合があります。この方法で折り目の上下にある要素を見つけたくない場合は、それらをコードから切り取ることができます。また、ライブラリが呼び出す行に対処する必要があります$this.is(":visible")が、それ以外には jQuery 固有のものはあまり見当たりません。

于 2012-07-05T18:28:43.807 に答える
0

Zepto には実装されていない $window.scrollLeft() も処理する必要があります (window.pageXOffset を使用できます)。

ブランチに完全な Zepto 互換性を実装しました: https://github.com/adamvert/jquery_lazyload

于 2013-08-26T10:02:38.690 に答える