2014-01-18 1 views
0

이제 jQuery가 실제로 얼마나 필요한지보아야한다고 생각했습니다. 그래서 나는 그 사람이 쉽게 믿었jQuery (document) .on ("keydown", ...)은 작동하지만 document.addEventListener ("keydown", ...)는 작동하지 않습니다.

document.addEventListener("keydown", function(e){...}) 

jQuery(document).on("keydown.", function(e){...}) 

교체에 의해 시작,하지만 놀랍게도 이벤트는 더 이상 해고되었다. 이 부분을 조사하기 위해 콘솔에 두 번째 버전을 입력했습니다. 이제 효과가있었습니다. ;-)

물론 조금 비현실적입니다. 콘솔에 입력 할 필요가없는 것을 선호합니다 ...

코드에서 이벤트 리스너는 DOM에 대한 일부 변경 직후에 추가되었으므로 몇 가지 추가 사항이 있습니다. 문제는이 문제와 관련이 있을지 모르겠지만 무엇을해야할지 모르겠습니다.

제안 사항?

편집 : 의견을 보내 주신 모든 분들께 감사드립니다. 이 특별한 경우에는 jQuery를 없애는 것이 좋을 것입니다 (그렇지 않으면 jQuery를 사용하는 것이 문제가되지 않습니다).

window.onload 등이 유용하지 않으므로 페이지가로드 된 후 DOM 요소가 추가되었다고 말해야합니다.

나는 최신 버전의 Chrome에서이 문제를 테스트하고 있다고 말했을 것이며 이전 버전과의 호환성에는 관심이 없습니다 (이 경우 어쨌든 너무 복잡하여 방금 삭제했습니다 ...). -)).

업데이트 : 누군가 코드를 요청했습니다.

document.addEventListener("keydown.test", function(e){ 
     console.log("doc.addEL test keydown, e=", e) 
    }); 

내가 (코드 위로)이 이벤트 리스너를 볼 수있는 HTML 요소의 속성을 크롬 개발 도구에 상대 : 여기에 그냥 테스트 예입니다. 그것은 단지 해고되지 않았습니다. 그때 또 다른 버그 보고서를 작성해야 할 때처럼 보입니다. ;-)

+4

코드에 오류가있을 수 있습니다. 게시해야 할 수도 있습니다. – Musa

+2

* "jQuery가 얼마나 필요한지 꼭 알아야한다고 생각했습니다."* ** ** ** jQuery가 필요하지 않습니다. 당신은 그것을 원할지도 모릅니다. 나는 분명히, 나는 모든 유틸리티 기능을 재발견하는 일에 귀찮게 할 수는 없다. 빈번한 브라우저에서 테스트하기. 브라우저 불일치를 발견하고, 세부 작업을하고, 작업을 수행합니다. 수천 가지 다른 환경에서 하루나 이틀 만에 새로운 브라우저 릴리스를 사전 테스트합니다. 유용한 것들을 할 수있는 엄청난 부가 기능을 만들어내는 ... 제 말은 ... 할 일이 있습니다. ;-) –

+1

구형 브라우저 (IE <9)에서는'addEventListener'와 함께'attachEvent'를 사용해야합니다. –

답변

0

나쁘다. 이벤트 처리기가 표준 구문을 사용하여 제거 될 수 있다는 소식을 잘못 읽었습니다. 그들은 할 수 있지만 구문은 removeEventListener에 이벤트 + 핸들러 함수를 제공한다는 것입니다.

"keydown.test"이벤트에 사용 된 구문은 (jQuery를 사용하지 않는 경우) 유효한 구문이 아닙니다.

죄송합니다. 누군가가 대답을 사용할 수 있기를 바랍니다.

관련 문제