HTML
<select multiple="multiple" id="myID" name="myName">
<option value="blue">blue</option>
<option value="red">red</option>
<option value="green">green</option>
</select>
jQuery:
$('select')
.change(function(){
alert("Change Event Triggered On:" + $(this).attr("value"));
})
Это, как, работы. Если я нажимаю объект в мультивыборе, предупреждение инициировано.
Однако, когда я 'выбираю' элемент из избранного меню с помощью jQuery как так:
$('#myOtherSelector')
.click(function(){
var $matchingOption = [goes and selects the specific OPTION to toggle]
if ($matchingOption.attr("selected")){
$matchingOption.removeAttr("selected")
}else{
$matchingOption.attr("selected","selected");
}
})
Тот сценарий работает, в котором он изменяет ВЫБРАННЫЙ атрибут и визуально обновляет список опций, однако onchange событие не становится инициированным в том сценарии.
Почему это?
Изменение элементов с помощью такого кода просто не запускает обработчики событий. Однако вы можете сделать это самостоятельно:
else {
$matchingOption.attr('selected', 'selected').trigger('change');
}