选择时的jQuery更改事件不会通过其他功能更改所选属性来触发

DA.*_*DA. 5 jquery multi-select

HTML

<select multiple="multiple" id="myID" name="myName">
    <option value="blue">blue</option>
    <option value="red">red</option>
    <option value="green">green</option>                
</select>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$('select')
    .change(function(){
        alert("Change Event Triggered On:" + $(this).attr("value"));
    })
Run Code Online (Sandbox Code Playgroud)

那就是有效的.如果单击多选中的项目,则会触发警报.

但是,当我通过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");
        }
    })
Run Code Online (Sandbox Code Playgroud)

该脚本的工作原理是它更改SELECTED属性并可视地更新选项列表,但是在该场景中不会触发onchange事件.

这是为什么?

Poi*_*nty 11

使用类似代码更改元素不会触发事件处理程序.但是你可以自己做:

else {
  $matchingOption.attr('selected', 'selected').trigger('change');
}
Run Code Online (Sandbox Code Playgroud)