1 に答える
select
の代わりに要素にイベント ハンドラーを配置するoption
と、すべてのブラウザーで機能します。change
およびkeyup
イベントを使用します。
$('#page').on( 'change keyup', function() {
var selected = this.value;
if( selected == 'about' )
alert( 'About!' );
});
なぜchange
とkeyup
イベントの両方が必要なのですか? change
イベントはマウス操作を処理し、keyup
矢印キーまたはその他のキーを使用してセレクター内を上下に移動すると、セレクターが応答します。
または、省略してイベントkeyup
のみをリッスンすることもできます。change
次に、セレクタを開いてカーソル キーを使用して上下に移動すると、Enter キーを押すまで何も起こりません。それはchange
イベントを発生させます。
多くの場合、キーボードでリストを上下にナビゲートしているときにユーザーにすぐにフィードバックを提供する方が役に立ちますchange keyup
。
なぜchange
代わりにclick
?どちらも使用できますがclick
、値が実際に変更されていなくても、クリックするとイベントが発生します。OTOH、ユーザーが既に選択されているオプションをクリックしただけでもイベントを発生させたいclick
場合があるため、その場合はイベントの方が適切です。
実際、もう少しテストした後、click
対のchange
質問にはもう少しあります。通常のマウスによる選択リストの操作では、わずかに異なる 2 つの使用方法が可能です。
セレクター上でマウスを押し、押したままにし、オプションの上でロールして、最後に離します。
セレクター上でマウスを押して離します。セレクターが開き、オプションが表示されます。オプションの上にマウスを移動し (この時点ではボタンは押されていません)、最後にオプションのボタンをクリックします。
click
の代わりにイベントをリッスンするとchange
、ケース #2 で、最初のクリックと、オプションを選択する最後のクリックで、イベントが 2 回発生します。したがって、両方のクリックが必要なのか、最後のオプションの選択だけが必要なのかに応じて、click
orを使用できます。change
click
ここでは完全にテストしていないことを付け加えなければなりませんがchange
、change keyup
非常に徹底的にテストしたので、それらをより信頼しています.