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 回発生します。したがって、両方のクリックが必要なのか、最後のオプションの選択だけが必要なのかに応じて、clickorを使用できます。change
clickここでは完全にテストしていないことを付け加えなければなりませんがchange、change keyup非常に徹底的にテストしたので、それらをより信頼しています.