2012-02-14 2 views
0

Я создал функцию hover с jquery. Все отлично работает в FireFox и Chrome, проблема в IE. Я меняю css top/left и использую jquery.show, чтобы сделать div видимым. Хотя в IE в первый раз, когда вы его наводите, он отображается в неправильном положении. Второй раз это показывает, просто отлично ..jquery/css изменение css на jquery show в IE

var x = (e.pageX - this.offsetLeft) - $(this).next("div").width(); 
var y = e.pageY - this.offsetTop; 



$(this).next("div").css({ display: 'block', 'position': 'fixed', zIndex: 2, left: x, top: y }); 

$(this).next("div").show("slow"); 

Опять он прекрасно работает в Chrome и Firefox, но IE .. (я только проверил IE9)

это CSS в DIV-х есть по умолчанию, чтобы скрыть его :

display:none; 
position:fixed; 
z-index:2; 
+0

Почему бы не добавить к следующему DIV класс и дать определение класса CSS для этого класса в 'css' файле? – gdoron

+0

Первоначально он имеет класс css (показывает его как display: none и т. Д.), Но я не знаю. Я просто так делал. есть ли разница в том, как IE принимает .css и addClass? –

+0

Работает для меня: http://jsfiddle.net/gilly3/gup8u/. Можете ли вы опубликовать [jsfiddle] (http://jsfiddle.net/), который демонстрирует проблему? – gilly3

ответ

0

вы работаете с этой проблемой, потому что ДИВЫ не полностью загружены при расчете x. jQuery не знает, какова ширина div и, таким образом, возвращает 0. В следующий раз, конечно, div загрузился, а jQuery получит ширину справа.

Вы можете исправить это, установив right вместо left. Это улучшает анимацию, а также, на мой взгляд:

http://jsfiddle.net/gilly3/gup8u/22/

$('.linkin').hover(function(e) { 
    var x = document.documentElement.offsetWidth - e.pageX; 
    var y = e.pageY; 

    $(this).next("div").css({ 
     right: x, 
     top: y 
    }).stop(true, true).show("slow"); 
}, 
function() { 
    $(this).next().addClass('tooltip').stop(true, true).hide("slow"); 
}); 
+0

Спасибо, кажется, действительно работает! IE дерьмо медленно, тогда FF и Chrome сделали это просто отлично –

+0

@QuincyJones - для Chrome это не работало. Chrome вел себя как IE: http://imgur.com/G21wz. Firefox * никогда * не понял, как правило, div был сосредоточен над миниатюрами, иногда это было далеко влево, но никогда не выровнялось слева от миниатюры, как должно. Это было так же медленно в Firefox и IE для меня. Chrome был немного быстрее. – gilly3