Почему это происходит?
Основная причина этого уже обсуждалась несколько раз на SO:
Старые версии IE просто не поддерживают click
события на <option>
элементах. Вместо этого вам нужно будет прослушать событие <select>
change
(или click)
:
$(selectBox).change(function () {
});
Что касается вашей конкретной задачи, чтобы alert
появлялось (или ваш фактический код выполнялся) только при выборе этой опции, вы можете проверить, выбран ли option
в событии change
:
var option = new Option(thatOption.text, thatOption.value);
$(selectBox).change(function () {
if ($(option).is(':selected')) {
alert('clicked');
}
});
Если у вас нет переменной option
наготове, вы можете вместо этого протестировать со значением <select>
:
$(selectBox).change(function () {
if ($(this).val() === 'something') {
alert();
}
});
Также, чтобы избежать try..catch
и Stupid IE doesn't know how to follow the spec
, вы можете сделать просто:
$(selectBox).append(option);