Может показаться, что вы пытаетесь добавить класс "hover" к другому элементу (а затем удалить его позже), основываясь на манипулировании id
элемента, который попал в точку. Если это так, я бы просто сделал это:
(function() {
$(".info-icon").hover(function() {
getHoverTarget(this).addClass('hover');
},
function() {
getHoverTarget(this).removeClass('hover');
});
function getHoverTarget(element) {
return $('#infobox-' + element.id.substring(10));
}
})();
Это позволяет избежать дублирования логики (дублирование = возможность испортить его позже).
Причина, по которой это не сработало так, как вы написали, заключается в том, что SLaks указывает , что ваша переменная $id
существует только как локальная в вашей первой функции; ваша вторая функция не имеет к ней доступа.