1

我想在默认情况下禁用滚动,AngularJS/Cordova 混合应用程序中的特定元素及其子元素除外。

我不想将 jQuery 引入应用程序,所以我尝试使用 Angular 的 jqlite(jQuery 的精简要素)。如果您有任何建议,我也愿意使用指令来解决问题。

正如您在下面看到的,我正在使用 jqlite 的 parent() 方法来查看元素的父级是否具有可滚动类。然而这并不有效,因为最好检查元素本身和 DOM 树上的任何父级。jQuery 有一个 parents() 方法可以做到这一点,但 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