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