我有以下mouseenter
/ mouseleave
功能:
$('.obj').on('mouseenter', function(){
var obj_top = $(this).offset().top,
obj_max = obj_top + 10;
}).on('mouseleave', function(){
var obj_top = $(this).offset().top,
obj_max = obj_top + 50;
});
由于这一切都发生在同一个对象中,无论如何我是否可以在整个函数中重用obj_top
变量而不必复制它?
答案 0 :(得分:2)
您不能因为这些变量是声明它们的函数作用域的本地变量,除非您在共享作用域中声明它。
但是如果你不想再重复一次,那么你可以为mouseenter
和mouseleave
使用单个事件处理程序,并检查event.type
以查看哪个事件是导致触发器根据决定要添加到obj_top
的值来查找obj_max
$('.obj').hover(function (e) {
var obj_top = $(this).offset().top,
obj_max = obj_top + (e.type == 'mouseenter' ? 10 : 50);
});
答案 1 :(得分:1)
将它移动到一个函数中?
$('.obj').on('mouseenter', function(){
setVariables(this, 10);
}).on('mouseleave', function(){
setVariables(this, 50);
});
setVariables = function(sourceElement, amount) {
var obj_top = $(sourceElement).offset().top,
obj_max = obj_top + amount;
}
编辑:Arun P Johny是对的,修复了错误的“这个”参考