Как отловить второй выбор на <select>с помощью jQuery? - PullRequest
4 голосов
/ 21 сентября 2009

Первый клик расширяет <option>,

вторым кликом выберите один из них.

Как поймать второй клик?

Ответы [ 4 ]

2 голосов
/ 21 сентября 2009

Вы можете связать некоторые события, используя функцию jQuery one , например:

$('select').one('click', firstClick);

function firstClick(evt) {
    //do anything you might want to do
    $(evt.target).parent().one('click', secondClick);
}

function secondClick(evt) {
    //again, do you thing
    $(evt.target).parent().one('click', firstClick);
}

Функция one выполнит обработчик события, который вы дадите один раз, а затем удалит его. Это решение позволяет переключать обработчик при каждом нажатии. Просто будьте осторожны, если вы используете этот. Вам также необходимо обработать событие blur для сброса первого обработчика.

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

$('select option').live('click', selectHandler);

function selectHandler(evt) {
    //insert magic here
}
1 голос
/ 21 сентября 2009

jQuery версия ответа Пита, который, я думаю, удовлетворит заданный вопрос

$("option").click(function(){
   alert($(this).text());
});

EDIT

Из-за того, что вышеупомянутое не было кросс-браузерным, я провел некоторый поиск и наткнулся здесь на сообщение о переполнении стека, которое может помочь

Событие пожара каждый раз, когда элемент DropDownList выбирается с помощью jQuery

0 голосов
/ 21 сентября 2009

Вы всегда можете использовать onclick для каждого параметра в выпадающем списке. Это не красиво, но должно работать:

<select>
    <option onclick="alert('May');">May</option>
    <option onclick="alert('June');">June</option>
    <option onclick="alert('July');">July</option>
</select>
0 голосов
/ 21 сентября 2009

Если выбор изменился, вызывается метод onchange.

...