Jquery. Событие collapse/expand для Select

jQuery Внезапно столкнулся с задачкой.

Надо в jquery запустить некое действие после того, как пользователь выберет некое значение в Select.

Внезапно оказалось, что для этого нет подходящего события. Есть событие change. Но оно срабатывает только когда значение меняется. Значит если пользователь не менял его, а выбрал старое значение, то событие не сработает.

Чтобы как-то выкрутиться я решил использовать следующий костыль:

$("selector").click(function(){

        if($(this).hasClass('expanded'))
        {
            //  ..... ваше действие ....
            $(this).removeClass('expanded');
        }else{
            $(this).addClass('expanded');
        }

    })

Костыль работает. Но только со случаями, когда выбор элемента происходит с помощью мыши. Для того чтобы отследить выбор с помощью клавиатуры я подключаю тот же change

$("selector").change(function(){
            //  ..... ваше действие ....
            $(this).removeClass('expanded');
    });

Ещё один вариант — когда объект тупо теряет фокус, тоже select сворачивается. И тут я потерпел фиаско. Ни blur ни focusout у меня не работают.

$("selector").focusout(function(){
            //  ..... действие .... не работает (((((
            $(this).removeClass('expanded');
    })

Вот пока так. Всё сумбурно и неокончательно. А как вы боретесь с этой проблемой?

Jquery. Событие collapse/expand для Select: 2 комментария

  1. altesack Автор записи

    Потому что не знал :)
    Но сдаётся мне там немного другой эффект может быть. Случаи очень разные бывают. В ряде случаев класс надо именно удалить, а в ряде случаев именно добавить. А не просто не глядя переключить.

Комментарии запрещены.