Javascript 如何包装jquery动画?
我正在尝试包装调用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
$('#' + 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.