Нажмите событие на элемент выбора выбора в Chrome - PullRequest
59 голосов
/ 10 сентября 2009

У меня проблема в Chrome со следующим:

var items = $("option", obj);  

items.each(function(){

    $(this).click(function(){

        // alert("test");
        process($(this).html());
        return false;
    });
});

Событие click, похоже, не срабатывает в Chrome, но работает в Firefox.

Я хочу иметь возможность click на элементе option из комбо, если вместо этого я сделаю элемент другого типа, скажем, <li>, он работает нормально. Есть идеи? Спасибо.

Ответы [ 13 ]

0 голосов
/ 01 июля 2016

Поскольку $(this) больше не является правильным с функцией стрелки ES6, которая не имеет такой же this, как function() {}, вы не должны использовать $ (this), если используете синтаксис ES6. Кроме того, согласно официальному сообщению jQuery anwser , существует более простой способ сделать то, что написано в верхнем ответе.
Лучший способ получить html выбранной опции - использовать

$('#yourSelect option:selected').html();

Вы можете заменить html() на text() или что-либо еще, что вы хотите (но html() было в исходном вопросе).
Просто добавьте прослушиватель событий change с сокращенным методом jQuery change(), чтобы вызвать ваш код при изменении выбранной опции.

 $ ('#yourSelect' ).change(() => {
    process($('#yourSelect option:selected').html());
  });

Если вы просто хотите узнать значение option:selected (опция, которую выбрал пользователь), вы можете просто использовать $('#yourSelect').val()

0 голосов
/ 26 января 2015

Я знаю, что этот фрагмент кода работает для распознавания щелчка по опции (по крайней мере, в Chrome и FF). Кроме того, это работает, если элемент не был там при загрузке DOM. Я обычно использую это, когда я вводю разделы ввода в один элемент select, и я не хочу, чтобы заголовок раздела нажимался.

$(document).on('click', 'option[value="disableme"]', function(){
    $('option[value="disableme"]').prop("selected", false);
});
0 голосов
/ 05 августа 2013

Что обычно работает для меня, так это сначала изменить значение раскрывающегося списка, например

$('#selectorForOption').attr('selected','selected')

, а затем вызвать изменение

$('#selectorForOption').changed()

Таким образом, любой javascript, подключенный к

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...