JQuery / JQuery UI слайдер событие для перехода / клика. Функция не срабатывает - PullRequest
0 голосов
/ 19 февраля 2012

Я создаю ползунок jquery для циклического просмотра коллекции элементов div, если я удерживаю ползунок вниз, перетаскиваю его и отпускаю.HandleSlider () вызывается.Если я нажимаю на случайную точку на слайдере, функция никогда не вызывается.Я попытался использовать два других типа событий без удачи.Есть ли обработчик события «Когда пользователь щелкает / прыгает» на слайдере без скольжения?

$( "#video_seek" ).slider({
        range: "max",
        step: 1,
        slide: function( event, ui ) {
        handleSlider();
        }
    });
$( "#video_seek" ).slider({ stop: function( event, ui ) {handleSlider();}});
$( "#video_seek" ).slider({ change: function( event, ui ) {handleSlider();}});

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Я считаю, что ваша проблема в синтаксисе. Каждый раз, когда вы используете $, он создает новый объект jQuery, поэтому

$( "#video_seek" ).slider({
        range: "max",
        step: 1,
        slide: function( event, ui ) {
        handleSlider();
        }
    });
//below are not necessarily referring to the original slider, but rather creating new sliders.
$( "#video_seek" ).slider({ stop: function( event, ui ) {handleSlider();}});
$( "#video_seek" ).slider({ change: function( event, ui ) {handleSlider();}});

@ Эндрю прав в своем синтаксисе. Все, что вам нужно, это событие 'change', которое вы можете установить в исходной декларации следующим образом:

$( "#video_seek" ).slider({
    change: function( event, ui ) {
         handleSlider();
    }
});

или даже так:

$( "#video_seek" ).slider({
    change: handleSlider
});

если вам нужно подключить обработчик событий после факта, сделайте так:

$( "#video_seek" ).bind( "slidechange", function(event, ui) {
     handleSlider();
});

или даже:

$( "#video_seek" ).bind( "slidechange", handleSlider);

(Правка)

Собираем все вместе и избегаем создания последующих объектов jQuery.

var videoSeek = $('#video_seek');
videoSeek.slider({
     slide: handleSlider
});
//added later on not necessary just for example of doing so
videoSeek.bind('slidechange', handleSlider);

function handleSlider(event, ui){
     //do stuff
}
0 голосов
/ 19 февраля 2012

Вам нужно установить события внутри фактического создания объекта или связать их потом ...

$( "#video_seek" ).slider({
    range: "max",
    step: 1,
    slide: function(event, ui) {handleSlider();}
    stop: function(event, ui) {handleSlider();}
    change: function( event, ui ) {handleSlider();}
});

или

$( "#video_seek" ).slider({
    range: "max",
    step: 1,
});

$( "#video_seek" ).bind( "slidechange", function(event, ui) {
    handleSlider();
});
...