我具有以下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变量而不必重复它?

最佳答案

您不能因为这些变量在声明它们的函数作用域内是局部的,除非您在共享作用域内声明它们。

但是,如果您不想再重复一次,则可以对mouseentermouseleave使用单个事件处理程序,并检查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);
});

关于javascript - jQuery具有相同变量的多功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32094186/

10-09 23:57