jresigのjqueryホットキーを使用していますが、単一のホットキーで動作するようです。問題は、データベースからのホットキーのリストがあり、それらを読み込み、ホットキーを動的に割り当てることです。だから私は、ホットキーと値のリストを持っており、これが私のJSです:jqueryホットキーの動的バインド
$(document).ready(function() {
var keyList = [];
$('.hotkey').each(function(){
hotkey = $(this).attr('value');
hotkey = hotkey.substring(1,hotkey.length-1);
myVal = $(this).next().attr('value');
alert("binding " + hotkey);
$(document).bind('keydown', hotkey, function() {
alert("YOU PRESSED " + hotkey);
$('.chosen-category-id').attr('value', hotkey);
$('.chosen-category-name').attr('value', myVal);
});
})
})
今何が起こる私はキーを押すたびに、それはちょうどそれがバインドされ、最後のホットキーを警告することです。ここに論理に何か問題はありますか?私は大量の文書を貼り付けるコピーから自分自身を保っています。私はこれを動的にやろうとしています。
EDIT
私はこれで私のコードをリファクタリング:
$(document).ready(function() {
var keyList = [];
var keyValues = [];
$('.hotkey').each(function(){
hotkey = $(this).attr('value');
hotkey = hotkey.substring(1,hotkey.length-1);
keyList.push(hotkey);
keyValues.push($(this).next().attr('value')) ;
})
$.each(
keyList,
function(index, key) {
$(document).bind('keydown', key, function() {
alert("O HAI YOU PRESSED " + key);
$('.chosen-category-id').attr('value', key);
$('.chosen-category-name').attr('value', keyValues[index]);
return false;
});
}
)
})
それは、この作品と他にはない理由として機能するようになりましたが、イム好奇心。ホットキー変数は最後の繰り返しを上書きし続けますか?また、最初のコードは、この2番目のコードが2つの場合に1つのループのみを実行するので、より効率的に見えます。
マークアップも使用して投稿できますか?好ましくはjsfiddle.netで? – Dogbert
マークアップについて知りたいことはありますか?彼らはちょうどクラスのホットキーと "(ホットキー)"の形式で値を持つ入力ボタンがたくさんある、私は質問を編集 – corroded
途中でジャークのような音には意味がない。私はちょうど正しい値を取得しているようにマークアップが関係ないと思う、問題はバインディングの割り当てだった – corroded