コアのjQueryイベントを上書きしようとしています。この場合はイベントです。私の意図は、preventDefault()
の機能Left(37)
、Up(38)
、Right(39)
とDown(40)
です。私のウェブアプリケーションでホットキーの一貫性を維持します。コアjQueryイベントの変更の問題
条件付きcharCode preventDefaultの問題については、hereのソリューションを使用しています。
何らかの理由で、私の機能の上書きは単に発砲していないので、私は問題に私の指を置くことはできません。私は過去30分間でこの問題が若干の脱毛を引き起こしたのではないかと心配しています。誰にも救済がありますか?
/*
Modify Keydown Event to prevent default PageDown and PageUp functionality
*/
(function(){
var charCodes = new Array(37,38,39,40);
var original = jQuery.fn.keydown;
jQuery.fn.keydown = function(e){
var key=e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
alert('now why is my keydown mod not firing?');
if($.inArray(key,charCodes))
{
alert('is one of them, do not scroll page');
e.preventDefault();
return false;
}
original.apply(this, arguments);
}
})();
をあなたの解決策が十分である、しかし、KeyDownイベント関数に見時、私は、KeyDownイベントが実際にイベントパラメータを持っていないことがわかります。だから、なぜ機能が発射されていないのかは分かりません。なぜなら、keydownのオブジェクト文字列はjquery.fn.keydownではなく、実際にはjQuery.event.special.change.keydownですか? 'keydown'を探す - http://code.jquery.com/jquery-1.4.3.js – Sandwich
申し訳ありませんが、私は意味しました:jQuery.event.special.change.filters.keydown – Sandwich
私はソースを見ましたしかし、 'keydown'のための[APIドキュメント](http://api.jquery.com/keydown/)を見ると、関数が期待する引数を見ることができます。 jQueryがイベント構造を実装する方法に違いがあるかもしれません。たとえば、keyupの検索を試みると、( 'each'の可能性のリストに)一度しか表示されません。 –