1

AngularJS/Cordova ハイブリッド アプリケーションの特定の要素とその子を除いて、デフォルトでスクロールを無効にしたいと考えています。

アプリに jQuery を導入したくないので、Angular の jqlite (jQuery の本質を取り除いたもの) を使用しようとしています。何か提案があれば、ディレクティブを使用して問題を解決することにもオープンです。

以下に示すように、jqlite の parent() メソッドを使用して、要素の親にスクロール可能なクラスがあるかどうかを確認しています。ただし、要素自体と DOM ツリーの親を確認する方がよいため、これは効果的ではありません。jQueryにはこれを行うparent()メソッドがありますが、jqliteにはありません。

jqlite を使用して要素のすべての親をチェックする方法、またはディレクティブから目的のソリューションを取得する方法はありますか?

// disable scrolling by default unless inside a `scrollable` element
document.addEventListener('touchmove', function (e) {
    var scrollable = false;
    // todo: need to go all the way up the DOM tree instead of just one level up
    var items = angular.element(e.target).parent();
    angular.forEach(items, function (o) {
        var item = angular.element(o);
        if (item.hasClass("scrollable")) {
            scrollable = true;
        }
    });

    if (!scrollable) {
        e.preventDefault();
    }
}, true);
4

0 に答える 0