>  기사  >  웹 프론트엔드  >  JQuery_jquery의 DOM 로딩 및 이벤트 실행 예제 분석

JQuery_jquery의 DOM 로딩 및 이벤트 실행 예제 분석

WBOY
WBOY원래의
2016-05-16 15:55:231300검색

이 기사의 예에서는 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程序设计有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.