You need to pass the handler function to the event bind like
$(document).ready(function () {
//create a named function instead of anonymous function as callback
function hsmouseenter() {
$("#hotspot, #center").css({
'width': '60%',
'height': '90%',
'top': '5%',
'left': '20%'
});
$("#center").css({
'box-shadow': '0 0 2vw white'
});
$(".slide, .rectangle-u, .rectangle-d, .tl-u, .tr-u, .tl-d, .tr-d").animate({
opacity: 0
}, 100)
}
function hsmouseleave() {
$("#hotspot, #center").css({
'width': '50%',
'height': '80%',
'top': '10%',
'left': '25%'
});
$("#center").css({
'box-shadow': '0 0 1vw white'
});
$(".slide, .rectangle-u, .rectangle-d, .tl-u, .tr-u, .tl-d, .tr-d").animate({
opacity: 1
}, 300)
}
$("#hotspot")
.stop(true, false)
//use the named functions as the handlers
.mouseenter(hsmouseenter)
.mouseleave(hsmouseleave)
.click(function () {
$("#hotspot").unbind('mouseenter mouseleave');
$("#center, #hotspot").css({
'height': '100%',
'width': '100%',
'top': '0',
'left': '0'
});
$("#hotspot").animate({
opacity: 0
}, 1000, function () {
$("#hotspot, .slide, .rectangle-u, .rectangle-d, .tl-u, .tr-u, .tl-d, .tr-d ").hide();
$(".ribbon").show();
$(".ribbon").css({
opacity: 0.3
});
})
});
$(".ribbon, .ribbon p")
.stop(true, false)
.mouseenter(function () {
$(".ribbon").css({
opacity: 1
})
})
.mouseleave(function () {
$(".ribbon").css({
opacity: 0.3
})
})
.click(function () {
$(".ribbon").css({
opacity: 0
}).hide();
$("#hotspot").show().animate({
opacity: 1
}, 100);
setTimeout(function () {
$("#hotspot, #center").css({
'width': '50%',
'height': '80%',
'top': '10%',
'left': '25%'
})
}, 1000);
setTimeout(function () {
$(".slide, .rectangle-u, .rectangle-d, .tl-u, .tr-u, .tl-d, .tr-d ").fadeIn();
//pass the handler function to the bind
$("#hotspot").mouseenter(hsmouseenter).mouseleave(hsmouseleave);
}, 1500)
});
});