이 기사의 예에서는 JQuery의 DOM 로딩 및 이벤트 실행 원칙을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
JavaScript와 HTML 간의 상호 작용은 사용자와 브라우저가 페이지를 작동할 때 발생하는 이벤트를 통해 처리됩니다. 문서 또는 해당 요소 중 일부에서 특정 변경이나 작업이 발생하면 브라우저가 자동으로 이벤트를 생성합니다. 예를 들어 브라우저가 문서를 로드하면 이벤트가 생성됩니다. 사용자가 버튼을 클릭하면 이벤트도 생성됩니다. 이러한 상호 작용은 기존 JavaScript 이벤트를 사용하여 수행할 수 있지만 jQuery는 기본 이벤트 처리 메커니즘을 추가하고 확장합니다. jQuery는 보다 우아한 이벤트 처리 구문을 제공할 뿐만 아니라 이벤트 처리 기능을 크게 향상시킵니다.
문서를 로드하는 브라우저를 예로 들면, 페이지가 로드된 후 브라우저는 JavaScript를 통해 DOM 요소에 이벤트를 추가합니다. 일반 JavaScript 코드에서는 주로 window.onload 메서드를 사용하지만, jQuery에서는 $(document).ready() 메서드를 사용합니다. $(document).ready() 메소드는 이벤트 모듈에서 가장 중요한 기능으로 웹 애플리케이션의 응답 속도를 크게 향상시킬 수 있습니다. jQuery는 $(document).ready() 메서드를 사용하여 기존 JavaScript window.onload 메서드를 대체합니다. 이 방법을 사용하면 DOM을 조작하고 DOM이 로드될 때 바인딩된 함수를 호출할 수 있습니다. 사용하는 동안 $(document).ready() 메서드와 window.onload 메서드 사이의 미묘한 차이점에 주의해야 합니다.
실행 시기
$(document).ready() 메소드와 window.onload 메소드는 기능은 비슷하지만 실행 시점에 차이가 있습니다. window.onload 메서드는 웹 페이지의 모든 요소(요소와 관련된 모든 파일 포함)가 브라우저에 완전히 로드된 후에 실행됩니다. 즉, JavaScript는 현재 웹 페이지의 모든 요소에만 액세스할 수 있습니다. jQuery에서 $(document).ready() 메소드를 통해 등록된 이벤트 핸들러는 DOM이 완전히 준비되면 호출할 수 있습니다. 이 시점에서 웹 페이지의 모든 요소는 jQuery에 액세스할 수 있지만 이것이 해당 요소와 관련된 파일이 다운로드되었다는 의미는 아닙니다.
예를 들어, 웹 페이지의 모든 사진에 특정 동작(예: 사진을 클릭하면 사진을 숨기거나 표시하는 등)을 추가하는 대형 사진 갤러리 웹사이트가 있습니다. window.onload 메서드를 사용하는 경우 사용자는 계속 진행하기 전에 각 이미지가 로드될 때까지 기다려야 합니다. jQuery에서 $(document).ready() 메서드를 사용하여 설정하면 모든 이미지가 다운로드될 때까지 기다리지 않고 DOM이 준비된 한 작업할 수 있습니다. 분명히 웹페이지를 DOM 트리로 구문 분석하는 것은 페이지의 모든 관련 파일을 로드하는 것보다 훨씬 빠릅니다.
또한, DOM이 준비된 동안에는 $(document).ready() 메소드에 등록된 이벤트가 실행되기 때문에 이때 해당 요소의 관련 파일이 다운로드되지 않을 수도 있다는 점 유의하시기 바랍니다. . 예를 들어, 이미지와 관련된 HTML을 다운로드하여 DOM 트리로 파싱했지만, 이미지가 아직 로드되지 않았을 가능성이 높으므로 이때 이미지의 높이, 너비 등의 속성이 유효하지 않을 수 있습니다. 시간. 이 문제를 해결하려면 jQuery의 또 다른 페이지 로딩 메소드인 load() 메소드를 사용할 수 있습니다. load() 메서드는 핸들러 함수를 요소의 onload 이벤트에 바인딩합니다. 핸들러 함수가 창 개체에 바인딩된 경우 모든 콘텐츠(창, 프레임, 개체, 이미지 등 포함)가 로드된 후에 트리거됩니다. 요소의 콘텐츠가 로드됩니다. jQuery 코드는 다음과 같습니다.
$(window).load(function(){ // 编写代码 })
은 JavaScript의 다음 코드와 동일합니다.
window.onload = function(){ // 编写代码 })
이제 windows.onload 메서드와 $(document).ready() 메서드의 차이점을 자세히 설명하겠습니다.
웹 페이지에 두 가지 기능이 있다고 가정하면 JavaScript 코드는 다음과 같습니다.
function one(){ alert("one"); } function two(){ alert ("two"); }
웹페이지가 로드되면 다음 JavaScript 코드를 통해 각각 one 함수와 two 함수를 호출합니다.
window.onload = one; window.onload = two;
그러나 코드를 실행한 결과 "two"라는 문자열 대화 상자만 나타나는 것을 발견했습니다. 문자열 "one" 대화 상자가 표시되지 않는 이유는 JavaScript의 onload 이벤트가 한 번에 하나의 함수에 대한 참조만 저장할 수 있기 때문입니다. 자동으로 이전 함수를 이후 함수로 덮어쓰므로 새 동작을 추가할 수 없습니다. 기존 행동.
두 함수의 순차적 트리거 효과를 얻으려면 이를 달성하기 위한 새로운 JavaScript 메서드만 생성하면 됩니다.
window.onload = function(){ one(); two(); }
이러한 방식으로 코드를 작성하면 일부 문제가 해결될 수 있지만 여전히 특정 요구 사항을 충족할 수 없습니다. 예를 들어 JavaScript 파일이 여러 개 있는 경우 각 파일은 window.onload 메서드를 사용해야 합니다. 이 경우 언급된 방법을 사용하세요. 코드를 작성하는 것은 골치 아픈 일이 될 수 있습니다. jQuery의 $(document).ready() 메서드는 이러한 상황을 매우 잘 처리할 수 있습니다. $(document).ready() 메서드가 호출될 때마다 이러한 동작 함수는 기존 동작에 추가됩니다. 등록 시 순차적으로 실행됩니다. 예를 들어 다음 jQuery 코드는 다음과 같습니다.
function one(){ alert("one"); } function two(){ alert("two"); } $(document).ready(function(){ one(); }) $(document).ready(function(){ two(); });
运行代码后,会先弹出字符串“one”对话框,然后弹出字符串“two”对话框。
下面看看ready()与onload()的耗时:
jQuery的ready()耗时 : 498 ms
简写方式
上面我们ready函数写成这样:
$(document).ready(function(){ // 编写代码 })
也可以简写成这样:
$(function(){ // 编写代码 })
另外,$(document)也可以简写为$()。当$()不带参数时,默认参数就是“document”,因此可以简写为:
$().ready(function(){ // 编写代码 })
3种方式都是一样的功能,读者可以根据自己的喜好,选择其中的一种。
希望本文所述对大家的jQuery程序设计有所帮助。