У меня был код, который как-то работал, но теперь, когда я пытаюсь внезапно переписать свои сценарии, я получил неправильные позиции X и Y во всплывающем окне.
Это первая проблема.
Следующая проблема в том, что этот код довольно плохой, потому что у меня всегда были ошибки при отображении всплывающих окон. Это сложно объяснить, лучше взгляните на код.
Главное: есть элемент (скажем, картинка), когда при наведении мыши мне нужно, чтобы окно отображалось, когда моя мышь находится над окном. Другими словами - я должен быть в состоянии скопировать некоторую информацию из этого окна. Итак, я написал код, но он довольно глючный, и теперь, за исключением ошибок, я получил неправильные позиции X и Y. Посмотрите:
$(".infoBox").die();
$(".infoBox").live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
$("#infoBox").html("");
$("#infoBox")
.css('top', (e.pageY - 10) + 'px')
.css('left', (e.pageX - 20) + 'px');
setTimeout(showInfoBox, 500);
ID = $(this).attr('id');
if ($(this).hasClass("companyInfo")) { showCompanyInfo(ID); }
if ($(this).hasClass("userInfo")) { showUserInfo(ID); }
} else {
setTimeout(hideInfoBox, 1000);
}
});
function showInfoBox() {
$("#infoBox").fadeIn('slow');
}
function hideInfoBox() {
if (mouse_in_infoBox == 0) {
$("#infoBox").hide();
$("#infoBox").html("");
}
};
$("#infoBox").hover(
function() {
mouse_in_infoBox = 1;
},
function() {
mouse_in_infoBox = 0;
setTimeout(hideInfoBox, 1000);
}
);
Так у меня есть, например
<img class="infoBox" id="company_id_which_was_dynamically_added">
и showCompanyInfo имеет
"$("infoBox").html(...)".
В моем index.php я получил, и CSS это:
#infoBox {
display: none;
position: absolute;
border: 1px solid #CDFF00;
background-color: #1C1F1A;
color: #CCCC33;
padding: 10px;
z-index: 5;
max-width: 400px;
min-width: 50px;
min-height: 50px;
}
Ах, да, другой вопрос связан с методами жизни и смерти. На моем сайте много вкладок, и когда я переключаю их, я помещаю обработчики, такие как .click / .hover, в некоторые элементы. И здесь я использую метод .live, потому что мои вкладки используют ajax. Но когда я переключаю вкладки несколько раз, я получаю несколько обработчиков, например, если я показываю лайтбокс, я получаю несколько лайтбоксов. Сейчас я использую .die () перед .live (), но кажется, что это совсем не хорошее решение ...
Я буду очень признателен за любую помощь, потому что я пытался сделать эти всплывающие окна несколько раз и всегда получал некоторые ошибки. В моем коде выше, если вы будете двигать мышкой, у вас будут пустые окна и другие плохие вещи.
Заранее спасибо!