2 に答える
1
$( document ).ready( function () {
var index = 0,
length = $( '#somemenu option' ).length;
$( '#somemenu' ).on({
change: function () {
if ( this.value === 'Trigger' ) {
$( '#togglethis').slideDown( 'slow', function() {
// Animation complete.
});
} else {
$( '#togglethis' ).hide();
}
},
keydown: function ( event ) {
if ( event.which === 38 ) {
index--;
if ( index < 0 ) {
index = length - 1;
}
} else if ( event.which === 40 ) {
index++;
if ( index >= length ) {
index = 0;
}
}
// Now index refers to the current index of the option element.
// You can now run your required animation
// Eg: animate( index );
}
});
});
あなたができることは、 (アップの場合は38、ダウンの場合は40)に'#somemenu'
基づいてキーダウンイベントをリッスンし、そのようにイベントを実行することですevent.which
于 2013-02-11T02:44:13.243 に答える
1
私のコメントを回答として投稿する:
あなたのコードをテストしたところ、期待どおりに動作するように感じました。オプション リストをドロップダウンし、カーソル キーを使用して強調表示を上下に移動する場合、Enter キーを押して現在強調表示されているオプションを選択済みのオプションにするまで、選択は最終的ではないため、change イベントはトリガーされません。
選択の効果を「プレビュー」したい場合は、選択のキーアップ/キーダウンまたはキープレスイベントにフックして、キーが上/下矢印キーであるかどうかを確認し、それを使用してUIの更新を実行できます.
于 2013-02-11T12:20:05.483 に答える