.change не работает, когда значение меняется через другой скрипт

у меня есть тег выбора

<select name="valueAA" id="valueAA">

я использую UI Slider, и мне нужно написать функцию при изменении тега select, но когда он меняется с помощью ползунка, моя функция не работает.

$("#valueAA").change(function()
        {
            alert("works");// doesn't work
        })

можно ли избежать такого поведения без изменения скрипта ui slider и как объяснить такое поведение?

Спасибо

ОБНОВИТЬ

скрипт выглядит так

    $(function(){
                $('select#valueAA, select#valueBB').selectToUISlider({
                    labels:6

                });
     });

где я должен поместить этот сценарий? (я пробовал много вариантов:))

$( ".selector" ).bind( "slidechange", function(event, ui) {
  ...
});

person Simon    schedule 21.07.2010    source источник


Ответы (3)


Насколько я вижу, слайдер пользовательского интерфейса написан поверх ползунка пользовательского интерфейса jQuery. Ползунок пользовательского интерфейса jQuery содержит события, которые вы можете использовать: начать, сдвинуть, изменить и остановить. Используя пример из документов, вы можете попробовать:

// Bind to the change event by type: slidechange.  
$("#valueAA").bind( "slidechange", function(event, ui) {
  $(this).change();
});

ИЛИ, используя ваш обновленный пример, укажите обратный вызов в параметрах ползунка:

$(function(){
            $('select#valueAA, select#valueBB').selectToUISlider({
                labels:6,
                change: function (event, ui) { $(this).change(); }
            });
 });
person Andy E    schedule 21.07.2010
comment
где я должен это поставить? не работает, когда я помещаю его в основную функцию:/ - person Simon; 21.07.2010
comment
@Syom: убедитесь, что у вас правильный селектор, и убедитесь, что ползунок инициализирован сначала. Вы также можете указать его в качестве опции для функции инициализации — я обновил свой пример, чтобы показать оба метода. - person Andy E; 21.07.2010
comment
Это не работает, потому что параметр изменения, который вы передаете, должен находиться внутри sliderOptions: $('select#valueAA, select#valueBB').selectToUISlider({ labels:6, sliderOptions: { change: function (event, ui) { $(this).change();} } }); - person frontendbeauty; 16.09.2011

Я боролся с этим некоторое время, но нашел ответ следующим образом:

$('.slider').selectToUISlider({ 
    sliderOptions: { 
        change:function() { 
            alert("works");
        } 
    } 
});
person 472084    schedule 19.04.2011

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

$("#valueAA").trigger("change");
person Fabian    schedule 21.07.2010
comment
нельзя ли обойтись без изменения их сценария? - person Simon; 21.07.2010
comment
Вы не меняете сценарий. Просто объедините мой код с кодом Энди и вставьте его под selectToUISlider(). - person Fabian; 21.07.2010