传递对jQuery对象的引用,该对象调用了jQuery插件方法(window对象)

时间:2015-04-07 18:05:40

标签: javascript jquery

我试图将$(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

1 个答案:

答案 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));