【发布时间】:2018-12-16 18:19:39
【问题描述】:
我需要在我的 Ionic 2 页面中获取 scrollTop 位置,但它无法使用简单的 jQuery。
在下面查看我的工作示例,滚动页面并单击它,它将为您提供y 位置编号。
$("body").click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
<div class="test">Thats a test</div>
但是jQuery获取scrollTop的方法不起作用,它总是返回0。
所以我打算用离子方式得到它,documentation here
我正在尝试使用 dimensions.contentHeight、dimensions.contentTop,但出现错误。下面是我的代码。
home.html 代码:
<ion-content content>
<div #topScroll>
The world is your oyster.
test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>test<br/><br/><br/><br/>kjh<br/>kjgh<br/>uitz<br/><br/><br/><br/>uztjhg<br/>kjh<br/>
<div class="test">Thats a test</div>
</div>
</ion-content>
编辑 1
home.ts 代码更新
home.ts 代码:
import { Content } from 'ionic-angular';
import { Component, ViewChild } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AfterViewInit,Renderer2, ElementRef } from '@angular/core';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage implements AfterViewInit {
@ViewChild(Content) content: Content;
constructor(private renderer: Renderer2, public navCtrl: NavController) {
}
ngAfterViewInit() {
// Renderer2 used not Renderer, inject it before using
this.renderer.listen('document', 'click', (e) => {
// Get contentHeight here
var iscroll = this.content.contentHeight;
// error - Property 'dimensions' does not exist on type 'Content'
var iscroll2 = this. content.dimensions.contentHeight;
alert(iscroll);
alert(iscroll2);
});
}
出现错误 - 无法读取未定义的属性
contentHeight。
我做错了什么?
【问题讨论】:
-
哪一行?
iscroll或iscroll2? -
您正在尝试获取未定义元素的高度,这意味着该元素不存在。试试
$(document).ready(function() { //GET HEIGHT HARE } );顺便说一下<div #topScroll>不应该是<div id="#topScroll">
标签: jquery angular ionic-framework ionic2 ionic3