我正在学习如何定义一个函数并稍后再调用它。 我试图在我的函数中定义'this'而不使用事件。
function slide() {
var imgAlt = $(this).find('img').attr("alt");
var imgTitle = $(this).find('a').attr("href");
var imgDesc = $(this).find('.block').html();
var imgDescHeight = $(".main_image").find('.block').height();
$(.active);
$(".main_image .block").animate({ opacity: 0, marginBottom: -imgDescHeight }, 250 ,
function() {
$(".main_image .block").html(imgDesc).animate({ opacity: 0.85, marginBottom: "0" }, 250 );
$(".main_image img").attr({ src: imgTitle , alt: imgAlt});
}
);
}
});
在第6行,你会看到'$(。active); '这是我想要选择活动类的地方,然后将以下函数应用于它。通常情况下我习惯用点击或其他东西来设置它,所以我不确定如何实现它。
任何帮助非常感谢!感谢
这是一个js小提琴,你可以看到大局: http://jsfiddle.net/wzQj6/21/
答案 0 :(得分:1)
请参阅下面的代码中的第3-4行,了解如何缓存.active
元素以供重用(然后使用它而不是this
!):
function slide() {
//cache all .active elements for reuse
var actives = $(".active");
//use the new 'actives' variable instead of 'this'
var imgAlt = actives.find('img').attr("alt");
var imgTitle = actives.find('a').attr("href");
var imgDesc = actives.find('.block').html();
var imgDescHeight = $(".main_image").find('.block').height();
//$(.active); -- not sure what you were doing with this :p
$(".main_image .block").animate({ opacity: 0, marginBottom: -imgDescHeight }, 250 ,
function() {
$(".main_image .block").html(imgDesc).animate({ opacity: 0.85, marginBottom: "0" }, 250 );
$(".main_image img").attr({ src: imgTitle , alt: imgAlt});
}
);
}
});
干杯!
答案 1 :(得分:0)
当你调用一个函数时,其作用域内的this
(也称为上下文)通常是拥有并调用所述函数的对象。 (即foo.bar()
,bar()
内this == foo
,call
。
在Javascript中,如果要调用函数并指定函数上下文是什么,可以使用bar.call(foo);
// inside bar, this == foo, even if foo wasn't the owner / caller of the function
方法,如下所示:
// take note, also, that your syntax for selecting .active is incorrect.
// you should be passing in a string.
var active_elements = $('.active');
some_function.call(active_elements);
您还没有发布您实际想要调用的函数的代码,所以我无法评论这是否是(最)正确的方法,但据我所知,这对你有用。
{{1}}
答案 2 :(得分:0)
据我了解你的问题,你正在寻找一种方法来调用一个范围,即javascript上下文,你分开准备的函数(jQuery方法)。如果是这样,这是我的代码示例和解释。
var el = $('.active');
$.fn.animate.call(el, options, timeout, function() {
var active = this;
// do whatever you need
});
apply
和call
。您可以查看它们之间的区别here。我希望我帮助过你。