2014-02-11 1 views
2

의견을 묻는 것처럼 들리면 유감스럽게 생각합니다.on (이벤트) 속성에 대한 자바 스크립트 대체

제 질문은 익명 함수로 onclick과 같은 속성을 대체해야하는 이유는 무엇입니까? 이점은 무엇입니까? 예를 들어

, 나는 지금까지 제기 될 필요가있는 웹 페이지를 가지고, 그래서 나는

<input id="text" onfocus="this.blur()"> 

<input id="text"> 
. 
. 
<script> 
    $('#text').focus(function(){this.blur()}); 
<script> 

하지만이 무엇을 하는가에 의해 교체 할 필요가? 원본보다이 점의 구체적인 이점은 무엇입니까? 나는 수색했다, 그러나 나는 진짜 이유, 단지 의견을 찾아 낼 수 없었다.

+2

가장 큰 장점은 우려의 분리입니다. HTML은 렌더링에 중점을두고 있으며 JavaScript는 기능에 초점을두고 있습니다. 못생긴 인라인 이벤트 처리 – Satpal

+1

또 다른 장점은 동일한 이벤트에 대한 여러 이벤트 처리기를 동일한 요소에 쉽게 바인딩 할 수 있다는 것입니다. quirksmode.org는 이벤트 처리기와 장단점을 묶는 경우 모든 다른 방법에 대해 아주 잘 설명합니다 : http://www.quirksmode.org/js/introevents.html. 그러나 분명히하기 위해서 : 이것을하는 것이 필수적이지는 않지만 "더 나은"코드가됩니다. –

답변

1

주요 장점은 명확하고 유연성있는 것입니다 :

  • 코드는 이후 좋은 연습으로 간주됩니다 자바 스크립트 임시 제한 모든 자바 스크립트 논리는 한 곳에서 발견 될 것입니다.
  • 당신은 기본적으로 HTML을 건드리지 않고도 웹 페이지의 동작을 쉽게 변경할 수 있다는 것을 의미하는 분리되지 않은 코드와 "방해가되지 않는"javascript를 작성할 수 있습니다.
  • 이벤트 핸들러에 대한 "onenvent"속성을 사용하는 것이 연결된 CSS 파일에 대해 style 속성을 사용하는 것과 완전히 동일하다고 말할 수 있습니다.
  • on() 함수를 사용하면 원하는만큼 이벤트 리스너를 추가 할 수 있습니다.
+0

좋은 소리. 또한 방금 깨달았습니다. DRY 원칙. 다른 '입력'에 똑같은 코드를 쓰지 말고 스크립트에서이 코드를 한 번만 사용하십시오. 유지 관리가 쉬워집니다. –

+0

@ MrLister 정확하게 유지하고 재사용하는 것이 훨씬 쉽습니다. 귀하의 예는 하나의 요소이지만, 공유 클래스가있는 잠재적 요소가 100+ 개라면 기능을 변경하려면 100 개 이상의 속성을 변경해야합니다. jQuery는 코드의 작은 조각입니다. 100 개 이상의 요소가 하나 이상의 HTML 페이지에 나타나더라도 각 페이지에 포함 된 JavaScript 한 개가 아닌 100 개 이상의 요소를 변경해야합니다. –

2

dom0 이벤트를 사용하지 않는 많은 이유가 있습니다. "눈에 잘 띄지 않는 javascript"라는 주제로 이들 중 일부를 찾을 수 있습니다. http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

마크 업을 디커플링과 행동은 가장 명백한

+0

기사에 좋은 점이 있지만 그 대부분은 내 관심사에 대답하지 않습니다.예를 들어, "Javascript가 실행되지 않을 가능성을 허용하십시오."라는 내용은 내 첫 번째 예제와 동일한 두 번째 예제에서도 마찬가지입니다. –

1
  • 하나의 좋은 장점이 당신의 HTML이 &을 간단 가벼운 유지하고로드 바닥에 자바 스크립트가 아직로드되고 빠른 동안 렌더링 할 수 있다는 것입니다. 퍼포먼스를 고려한다면, 처음부터 HTML (& css)을로드하고 마지막에 스크립트를로드하는 것이 더 좋습니다.

  • 또한 코드와 마크 업을 분리하여보다 체계적이고 쉽게 디버깅하기가 덜한 을 생성합니다.

  • 속성에 부피가 큰 자바 스크립트 코드를 쓸 수 없다는 것은 불편할뿐만 아니라 복잡한 논리를 위해 함수로 작성해야합니다.

관련 문제