2010-05-12 1 views
0

это отлично работает в FF, но не в IE, Chrome или Safari.опция & jQuery .click() не будет работать вместе

Таким образом, как вы можете видеть, я хочу прикрепить событие click к каждому варианту.

Я АЛОС попытался

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. Что я делаю не так? Спасибо

+0

Почему бы не повесить на '$ ('countryDropDown') событие change'? – Lazarus

ответ

2

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

var countryID; 

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

Update:

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

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

Update2:

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

<option>Foo</option> 

Если да, попробуйте .text() вместо .val().

$('option:selected', this).text(); 
+0

почему вам не кажется, что мне нужен доступ к элементу опции? Мне нужно получить значение из этого ... есть ли другой способ? возможно получить значение поля выбора, которое получит выбранное значение параметра? – patad

+0

@meow - '$ (this) .val()', в контексте элемента select, получает значение выбранного параметра. Это верно. – karim79

+0

ps. .change() не работает ни в каком другом браузере, кроме FF, так же, как щелчок .. – patad

0

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

$("#countryDropdown").change(function() { 
    var countryId = $(this).val(); 
    dostuff(); 
}); 
+0

ОК, поэтому он работает, но он дает мне пустую строку взамен вместо значения щелкнутого параметра. – patad

+0

Если вы получаете идентификатор, то он должен быть в значении параметра. <значение опции = "76"> Япония -> будет работать с val(). Согласитесь, может быть, текст(), если вы хотите текст опции? – Alistair

1

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

это решение:

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

$("#countryDropdown").change(function() { 
    var countryId = $('option:selected',this).attr('id'); 
    dostuff(); 
}); 
Смежные вопросы