2013-07-02 2 views
0

JS Fiddle здесь: http://jsfiddle.net/Xw9QK/1/поповера появляется в неправильном месте

Я делаю поповер, и если бы она работала, но потом, когда я начал загрузку содержимого хотя AJAX и добавление кок появиться первым сейчас появляется не в том месте.

Я думаю, что проблема связана с тем, что счетчик делает небольшой popover, и когда контент загружается, он использует один и тот же div для добавления содержимого ajax, а затем изменяет размер окна перед его перемещением.

Теперь иногда это работает, на моем сайте это кажется неработоспособным в первый раз, но при закрытии и открытии его снова он возвращается в правильное положение!

Может ли кто-нибудь увидеть, что здесь происходит не так?

Я использую эту функцию для сброса позиции:

function reset_popover_position(user_id) { 
    var position = $('#link_' + user_id).position(); 
    console.log(position); 
    var top_position = (position.top - $('.new_tooltip').outerHeight()) - 10; 
    console.log(top_position); 
    var left_position = (position.left - ($('.new_tooltip').outerWidth()/2) + ($('#link_' + user_id).outerWidth()/2)); 
    console.log(left_position); 

    $('.new_tooltip').css({ 
     top: top_position + "px", 
     left: left_position + "px" 
    }); 

    return true; 
} 

ответ

3

setTimeout исправил проблему. Fiddle.

Это трюк, который я использую, когда занимаюсь динамическим содержанием высоты &.

Я думаю, что это setTimeout из 1 дает браузеру достаточно времени для визуализации HTML & так, когда setTimeout вызывает фактический код, который вычисляет размеры, все дает правильные результаты.

Я добавил setTimeout внутри toggle_popover.

setTimeout(function() { 
    reset_popover_position(user_id); 
}, 1); 
+0

Это работает! Но на моем сайте, где он загружается через ajax, кажется, что он появился не в том месте на 1 мс, а затем вернитесь в нужное место, знаете ли вы, как это исправить? – Adam

+0

Я исправил это, используя toggle(), я спрятал его, добавил html, сбросил позицию, а затем снова переключил его :) Спасибо за вашу помощь! – Adam

Смежные вопросы