JQuery .position() и .offset() грешка във Firefox

Имам превъртащ се DIV, който чрез JQuery определя елемента в средата. Опитах да използвам параметрите position() и offset() и в двата случая Firefox не получава правилния отговор, докато Chrome и Safari го правят.

Позицията().top или offset().top определя позицията на средния елемент от контейнера. И все пак firefox го определя от контейнера за превъртане и по този начин дава третия елемент винаги надолу, а не средния елемент по време на превъртане.

Ето 2 цигулки, едната използва .position(), а другата .offset().

OFFSET() -- http://jsfiddle.net/pxfunc/XHPYF/7/ ПОЗИЦИЯ () -- http://jsfiddle.net/U4qyp/133/

Някой има ли идея защо се случва това или как да го поправя?


person RIK    schedule 06.07.2011    source източник
comment
възможен дубликат на JQuery Превъртане и събиране на стойност на средния елемент   -  person Dutchie432    schedule 06.07.2011
comment
Написах и този въпрос. Отговорът нямаше нищо общо с въпроса и след това беше игнориран, сякаш беше отговорен   -  person RIK    schedule 06.07.2011


Отговори (1)


Ако погледнете действителния js файл, поведението на превъртане се обработва по различен начин в зависимост от браузъра. За Firefox той манипулира -moz-transform от елемента за превъртане вместо позицията на това, което е вътре в него.

ДЕМО: http://jsfiddle.net/vQXqq/

jQuery

function test() {

    var $ul = $('#leftwheel');

    $('#bkodate').val('');

    $ul.find('li').each(function(n) {

        var $this = $(this);

        var $mozTransform = $(".slotinner").css("-moz-transform");
        var mozfix = !($mozTransform === null) ? parseInt($mozTransform.substring($mozTransform.lastIndexOf(',') + 1, $mozTransform.length - 3)) : 0;

        if ($this.position().top + $this.height() + mozfix > 100 && $this.position().top + mozfix < $ul.height()) {

            var result = $('#leftwheel li:eq(' + parseInt(n - 2) + ')').html();
            $('#bkodate').val(result);
        }
    });
}
var leftwheel = new iScroll('leftwheel', {
    snap: 'li',
    momentum: true,
    hScrollbar: false,
    vScrollbar: false,
    onScrollEnd: function() {
        test();
    }
});
person kei    schedule 13.07.2011