событие изменения jQuery на выборе не инициировано через другую функцию, изменяющую выбранный атрибут

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 событие не становится инициированным в том сценарии.

Почему это?

5
задан DA. 23 February 2010 в 20:19
поделиться

1 ответ

Изменение элементов с помощью такого кода просто не запускает обработчики событий. Однако вы можете сделать это самостоятельно:

else {
  $matchingOption.attr('selected', 'selected').trigger('change');
}
11
ответ дан 13 December 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: