5

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");
        }
    })

このスクリプトは、SELECTED属性を変更し、オプションリストを視覚的に更新するという点で機能しますが、そのシナリオではonchangeイベントはトリガーされません。

何故ですか?

4

1 に答える 1

11

そのようなコードで要素を変更しても、イベントハンドラーはトリガーされません。ただし、自分で行うことはできます。

else {
  $matchingOption.attr('selected', 'selected').trigger('change');
}
于 2010-02-23T20:22:20.537 に答える