我做了一个小功能,我将在应用程序中多次重复使用。好像我写的语法错了,因为我的控制台显示错误“对象[对象对象]没有方法'fadeIt'
所以我想象的问题是将一个函数的对象传递给另一个函数..不确定如何优雅地执行它。我的代码如下。
感谢您的帮助!
http://jsfiddle.net/danielredwood/aFx6u/2/
function fadeIt() {
$(this).animate({
opacity:0
}, 400, function(){
//$(this).css('cursor','auto');
//$(this).children('img').css('margin-left','-100px');
});
}
$('.box').click(function(){
$(this).fadeIt();
}):
答案 0 :(得分:2)
您可能希望将其变为插件并使用以下方法:
$。fn.fadeIt = function(){
};
然后你可以使用$(this).fadeIt();
答案 1 :(得分:1)
您可以使用fadeIt
设置.call()
功能的调用上下文,就像这样......
fadeIt.call(this)
的说明:强> 的
JavaScript有两种方法,.call()
和.apply()
,它们都允许您在调用时手动设置您正在调用的函数中的this
的值。
为此,所有JavaScript函数都可以使用.call()
和.apply()
方法。
该方法的第一个参数是您要在要调用的函数中为this
设置的值。两者之间的唯一区别是如何传递参数。
使用.call()
,参数将单独传递,例如......
func.call(thisArg, 'foo', 'bar')
使用.apply()
,参数将作为类似数组的集合传递...
func.apply(thisArg, ['foo', 'bar'])
...将被调用为被调用函数中的单个参数。
答案 2 :(得分:0)
这会修复您的代码。
function fadeIt(element) {
element.animate({
opacity:0
}, 400, function() {
// element.css('cursor','auto');
// element.children('img').css('margin-left','-100px');
});
}
$('.box').click(function() {
fadeIt($(this));
}):
答案 3 :(得分:0)
您要做的是使用点符号调用函数,在Javascript中仅限于对象的原型。你想要做的是改变它,所以你将this
作为参数传递给fadeIt
function fadeIt(obj) {
...
}
然后致电fadeIt($(this));