2011-11-15 3 views
1
<div class="actions"> 
     <h3>Actions</h3> 
     <ul> 
      <li><a href="/configurations">Configurations</a></li> 
     </ul>    
    </div> 


<script type="text/javascript" src="/jquery.min.js"></script> 
<script type="text/javascript"> 
     $('ul a').click(function(){ 
        alert(""); 
      }); 
</script> 

위의 코드는 document.ready가 필요합니다. 내 말은, js가 html보다 먼저 실행될 때 어떤 경우입니까?페이지 끝의 js 넣기

답변

2

.readyDOMContentLoaded (또는 onreadystatechange 또는 다른 브라우저의 대안에 대한 구색)의 바로 가기입니다. 이 이벤트는 DOM이 빌드 될 때 시작됩니다. 즉, 전체 HTML이 다운로드 된 경우입니다.

스크립트 태그가 </body> (그중 어떤 것도 div 또는 다른 요소에 포함되지 않음)보다 맨 마지막에있는 경우 최종 결과는 동일하므로 사용자는 $(document).ready이 필요하지 않습니다. 스크립트를 <head>에 넣으면 내용로드 속도가 느려지므로 권장하는 방법입니다.

나는이 패턴을 채택 할 것을 권 해드립니다 만, 문제를 방지하기 위해 $ 글로벌 :

<script> 
(function($){ 
    $('ul a').click(function(){ 
     alert("") 
    }) 
})(jQuery) 
</script> 

이 다른 질문은 흥미 롭다 읽기 :

+0

'jQuery (function ($) {})'이 더 좋은 방법입니다. 여기서는 준비된 문서를 사용하는 데 비용이 많이 들지 않으며 나중에 코드를 옮기면 혼동을 일으킬 수 있습니다. – Eric

+0

"better"는 주관적입니다. --ready에 대한 검사는 불필요합니다. 이와 같은 클로저 사용은 대부분 잘 이해해야합니다. –

-1

귀하의 경우에는 문제가없는 것으로 보입니다. 그러나 사진 (<img />)을 사용하면 그림이 아직 표시되지 않아도 문서에서 기능을 실행할 수 있습니다 ("준비"이벤트 발생).

+0

DOM이로드되면 이미지가로드 될 때까지 기다리지 않습니다. – Headshota

+0

당신은'load' 이벤트를 생각하고 있습니다. DOMReady는 이미지가로드되기 전에 실행됩니다. –