Если вы делаете, как вы сказали, и создаете #avatar
DIV, скрытый, то все, что вам нужно сделать, это изменить источник изображения и связать событие .load()
изображения † , чтобы дождатьсяизображение для загрузки, затем откройте его по желаемой координате (которая, вероятно, будет исходить из положения мыши в событии).Если вам нужно, чтобы изображение оставалось с курсором, обработчик событий .mouseover()
может обновлять его.
** UNTESTED ** (может содержать ошибки!)
var avatarHolder = $('#avatar');
var avatar = avatarHolder.find('img');
$('.link-name').hover(function(evt) {
var linkURL = getLinkURL(this);
avatar.attr('src', linkURL).load(function() {
avatarHolder.css('left', + evt.pageX + 'px')
.css('top', + evt.pageY + 'px')
.width(avatar.width())
.height(avatar.height())
.show();
});
if (avatar[0].complete) {
avatar.load();
}
}, function() {
avatar.hide();
}).mouseover(function(evt) {
avatarHolder.css('left', + evt.pageX + 'px')
.css('top', + evt.pageY + 'px');
});
NB. Если настройки ширины / высоты не работают так, как у меня выше, используйте вместо них avatar.attr('width')
и avatar.attr('height')
.getLinkURL()
является заполнителем, однако вы намереваетесь получить URL изображения аватара по указанной ссылке.
† .load()
Процедура не всегда срабатывает в некоторых браузерах, когдаизображение кэшируется, лучше всего проверить свойство images .complete
после привязки события загрузки и вызвать его вручную, если оно истинно.