Слайдер jquery не работает с jquery-1.6!

Этот код слайдера отлично работает со старой версией jquery, такой как jquery-1.5. Но он не работает должным образом, когда я пытался интегрировать его с последней версией jquery - jquery-1.6.

Вы можете попробовать это здесь — содержимое не прокручивается при перемещении ползунка. Содержимое должно прокручиваться вдоль ползунка, когда вы перетаскиваете его вперед и назад.

Вот часть кода,

function init_scrollbar ()
{
    //scrollpane parts
    scroll_frame = $('#scroll-frame'); // scroll-frame
    scroll_content = $('#scroll-content'); // scroll-content
    scroll_location_pixel = 0;
    original_location_scroll_handle = 0;
    original_width_scroll_content = scroll_content.width();

    scrollbar = $('#content-slider').slider({
        min: 0,
        animate: true,
        create: on_scrollcreate,
        change: on_scrollchange,
        slide: on_scrollslide
    });
}

Я думаю это событие slide не работает, вот он код,

function on_scrollslide(event, ui)
{
    var scroll_maximum = scroll_content.width() - scroll_frame.width();
    scroll_frame.attr({scrollLeft: ui.value * (scroll_maximum / 100) });
}

Есть идеи, что я сделал не так? можешь сказать как это исправить?

Спасибо.


person laukok    schedule 13.05.2011    source источник
comment
Любая неотложная причина, по которой вы хотите обновиться?   -  person alex    schedule 13.05.2011


Ответы (3)


Для jQuery 1.6:

Начиная с jQuery 1.6, метод .attr() возвращает undefined для атрибутов, которые не были установлены. Кроме того, .attr() не следует использовать для простых объектов, массивов, окон или документов. Чтобы получить и изменить свойства DOM, используйте метод .prop().

Вот рабочая скрипта.

person WSkid    schedule 13.05.2011

jQuery теперь правильно различает атрибуты и свойства с помощью нового метода .prop().

В функции on_scrollslide измените scroll_frame.attr({ на scroll_frame.prop({:

function on_scrollslide(event, ui)
{
    //var scroll_maximum = scroll_frame.attr("scrollWidth") - scroll_frame.width();
    var scroll_maximum = scroll_content.width() - scroll_frame.width();

      // change---vv
    scroll_frame.prop({scrollLeft: ui.value * (scroll_maximum / 100) });
}
person RightSaidFred    schedule 13.05.2011

Я думаю, вам следует игнорировать версию 1.6 и сразу переходить на 1.6.1. Согласно блогу jQuery:

При обновлении с версии 1.5.2 до версии 1.6.1 вам не нужно изменять какой-либо код атрибута.

Источник: http://blog.jquery.com/

person Christophe    schedule 13.05.2011