我试图将$(window)
作为参数传递给某个函数,但是当我尝试从函数内部获取scrollTop()
时,它返回0但是如果我尝试获取$(window).scrollTop
它给了我正确的结果。
你能否告诉我我犯的错误是什么?如果传递元素作为一个参数不是正确的方法那么它可能是它的替代。
以下是我的代码。
//Funtion Declaration
$.fn.someFunction = function (element) {
var container = $(this),
viewTop = element.scrollTop(),
console.log($(window).scrollTop());//returns correct value
console.log(viewTop);//returns 0
}
//Calling the function
$fn.otherFunction = function(){
$(el).someFunction($(this));
}
$(window).otherFunction();
窗户的高度也是如此。
// Following is the actual Code. It may be messy to look at but still.
$(window).scroll(function () {
$(window).scrolling();
$(".footer").displayFooter();
});
$.fn.scrolling = function () {
$(".parallax_active").each(function (i, el) {
$(el).parallax($(this));
})
// some more stuff goes here.
};
$.fn.parallax = function (parent) {
var container = $(this),
viewTop = parent.scrollTop(),
viewHeight = parent.height(),
viewHeader = $(".header-container").outerHeight(),
viewBottom = viewTop + viewHeight,
header = viewTop + viewHeader;
console.log($(window).scrollTop());
console.log(viewTop);
console.log(viewHeight);
}
谢谢, Arpita
答案 0 :(得分:1)
在.each()
方法中,this
指的是您正在迭代的元素。
如果您希望将this
绑定到调用.scrolling()
方法的元素,请获取this
之外的.each()
的引用方法:
$.fn.scrolling = function () {
var self = this;
$(".parallax_active").each(function (i, el) {
$(el).parallax($(self));
})
};
您还可以清楚地传递包含window
对象的jQuery对象:
$(el).parallax($(window));