option & jQuery .click () не будет работать вместе - PullRequest
0 голосов
/ 12 мая 2010

это прекрасно работает в FF, но не в IE, Chrome или Safari.

$('#countryDropDown option').click(function() {
   var countryID = $(this).val();
   dostuff();
});
// countryDropDown = id of select

Итак, как вы можете видеть, я хочу прикрепить событие щелчка к каждой опции.

Я тоже пытался

var allOpts = $('#countryDropDown option'),
   l = allOpts.length,
   i = 0;

for (i = 0; i < l; i += 1) {
    $(allOpts[i]).click(function() {
        var countryID = $(this).val();
        doStuff();
    });
}

Он по-прежнему не хочет работать ни в каком другом браузере, кроме FF. Что я делаю неправильно? Спасибо

Ответы [ 3 ]

2 голосов
/ 12 мая 2010

Вопрос в том, нужно ли вам это делать таким образом. Могу поспорить, что вам не нужен доступ к элементу option, поэтому вы также можете использовать .change():

var countryID;

$('#countryDropDown').change(function() {
   countryID = $(this).val();
   dostuff();
});

Обновление:

Согласно документации , .val() должно работать, но если по какой-то причине это не сработает, сделайте следующее:

var countryID;
$('#countryDropDown').change(function() {
   countryID = $('option:selected', this).val();
   dostuff();
});

Update2:

Я не знаю, является ли это уместным (я думаю, что оно все же должно работать), но может быть так, что ваши option элементы не имеют атрибута value, например,

<option>Foo</option>

Если это так, вы должны попробовать .text() вместо .val().

$('option:selected', this).text();
1 голос
/ 23 июня 2011

мяу у нас такая же проблема ...

это решение:

, если вы хотите получить доступ к идентификатору каждой опции. это подойдет.

$("#countryDropdown").change(function() {
   var countryId = $('option:selected',this).attr('id');
   dostuff();
});
0 голосов
/ 12 мая 2010

val () используется для получения значения элемента формы. Опция не элемент формы, а подэлемент, если хотите. В дальнейшем ваш подход не будет работать, если они используют клавиатуру. Тебе лучше делать это так.

$("#countryDropdown").change(function() {
    var countryId = $(this).val();
    dostuff();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...