Javascript 如何包装jquery动画?

Javascript 如何包装jquery动画?,javascript,jquery,Javascript,Jquery,我正在尝试包装调用jQuery的集中式。在我的应用程序中设置动画 $('#' + this.elmItem).animate({"top": moveTo}, speed, function() { var item = scope.getItemSizeDom(); scope.saveItemSize(item); }); // This works 我试图用一种没有成功的方法来包装,你能告诉我我做错了什么吗?一个如何修复的例子 this.i

我正在尝试包装调用jQuery的集中式。在我的应用程序中设置动画

    $('#' + this.elmItem).animate({"top": moveTo}, speed, function() {
        var item = scope.getItemSizeDom();
        scope.saveItemSize(item);
    }); // This works
我试图用一种没有成功的方法来包装,你能告诉我我做错了什么吗?一个如何修复的例子

this.itemAnimate = function(direction, moveTo, speed) {
    $('#' + this.elmItem).animate({direction: moveTo}, speed, function() {
        var item = scope.getItemSizeDom();
        scope.saveItemSize(item);
    });// This does not work
};

this.itemAnimate("top", moveTo, "fast");
一些阅读:

函数不知道这是什么,因为它没有上下文。给它这样的上下文:

this.itemAnimate.apply(this, ["top", moveTo, "fast"]);
而不是

this.itemAnimate("top", moveTo, "fast");
但是,如果您将
别名化为其他变量,则效果会更好,这样它就不会在范围链中丢失

var my_thing = this; // be descriptive about what it is exactly.
my_thing.itemAnimate.apply(my_thing, ["top", moveTo, "fast"]);
一些阅读:

函数不知道这是什么,因为它没有上下文。给它这样的上下文:

this.itemAnimate.apply(this, ["top", moveTo, "fast"]);
而不是

this.itemAnimate("top", moveTo, "fast");
但是,如果您将
别名化为其他变量,则效果会更好,这样它就不会在范围链中丢失

var my_thing = this; // be descriptive about what it is exactly.
my_thing.itemAnimate.apply(my_thing, ["top", moveTo, "fast"]);

您需要创建一个基本的jQuery插件:

$.fn.itemAnimate = function(direction, moveTo, speed) {
    var params = {};
    params[direction] = moveTo;
    $(this).animate(params, speed, function() {
         //do something here
    });
};
然后称之为:

$("whatever").itemAnimate("top", moveTo, "fast");

您需要创建一个基本的jQuery插件:

$.fn.itemAnimate = function(direction, moveTo, speed) {
    var params = {};
    params[direction] = moveTo;
    $(this).animate(params, speed, function() {
         //do something here
    });
};
然后称之为:

$("whatever").itemAnimate("top", moveTo, "fast");

和一个

您可以将对象作为参数传递给动画方法:

this.itemAnimate = function (direction, moveTo, speed) {
    var param = {};
    param[direction] = moveTo;
    $('#' + this.elmItem).animate(param, speed, function () {
        var item = scope.getItemSizeDom();
        scope.saveItemSize(item);
    }); // This does not work
};

可以将对象作为参数传递给动画方法:

this.itemAnimate = function (direction, moveTo, speed) {
    var param = {};
    param[direction] = moveTo;
    $('#' + this.elmItem).animate(param, speed, function () {
        var item = scope.getItemSizeDom();
        scope.saveItemSize(item);
    }); // This does not work
};

您是否看到任何错误?这是什么,为什么itemAnimate是可链接的,它只是一个函数?对不起。。。方法item animate它在一个类中没有类,它是原型还是文本,或者…你看到任何错误了吗?这是什么,为什么itemAnimate是可链接的,它只是一个函数?对不起。。。方法项animate它在一个类中没有类,它是原型化的,还是在一个文本或…使用对象文本表示法,您可以使用变量字符串定义对象的属性键。我不知道这是不是你的问题。这段代码给出了一个对象:
{top:moveTo}
其中moveTo是作为参数传递的值,谢谢解释+1使用对象文字符号,您可以使用变量字符串定义对象的属性键。我不知道这是不是你的问题。这段代码给出了一个对象:
{top:moveTo}
其中moveTo是作为参数传递的值,谢谢解释+1.