AngularJS禁用滚动,除了特定元素和子元素 - jqlite或指令

时间:2014-07-23 18:45:45

标签: javascript angularjs cordova jqlite

我想默认禁用滚动,除了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);

0 个答案:

没有答案