코어 jQuery 이벤트를 덮어 쓰려고 시도합니다.이 경우 keydown
이벤트입니다. 제 의도는 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에 대한 객체 문자열이 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 docs] (http://api.jquery.com/keydown/)에서 함수가 기대하는 인수를 볼 수 있습니다. jQuery가 이벤트 구조를 구현하는 방법에 차이가있을 수 있습니다. 예를 들어 keyup 검색을 시도하면 ('each' 가능성 목록에서) 한 번만 나타납니다. –