Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 750R
- node.js
- callback function
- MongoDB
- npm
- git
- NoSQL
- github
- 마이크로소프트
- 마소
- 테스트
- 제이쿼리
- 웹디자인
- AngularJS
- Javascript
- non-blocking
- 인턴
- Microsoft
- 개발환경
- 오픈소스
- Python
- 크로스브라우징
- Ajax
- JQuery
- CoffeeScript
- 콜백 함수
- 자바스크립트
- 빅데이터
- CSS
Archives
- Today
- Total
Inspired World
jQuery 유용한 팁, 노하우, 이벤트, 문제 해결 본문
jQuery를 처음 사용할 때
"어 이게 왜 안돼지?" 하는 상황이 종종 생깁니다.
제가 jQuery를 1.4.2 버전 때 첨 접하고 나서
지금까지 쭉 써오고 있는데
제가 모든 API를 섭렵하고 매일매일
jQuery를 Heavy하게 쓰는 유저는 아니지만
경험을 통해 얻은 팁 몇가지가 있습니다.
< DOM이 다 로드 된 이후에 처리하기 >
DOM이 다 로드 된 이후에 처리하지 않으면
아무리 셀렉터를 이용해서 선택을 한들 DOM 객체를 인식하지 못하고
공들여 쓴 JavaScript + jQuery 소스가 제대로 작동하지 않게 되는데요.
기본적이지만 짚고 넘어가겠습니다.
또는
모든 DOM이 로드 된 이후에 저 코드를 실행하게 됩니다.
< 동적으로 생성된 DOM에 해당되는 이벤트 처리하기 >
동적으로 생성된 DOM 같은 경우에는 jQuery의 일반적인 이벤트 리스너인
.bind 또는 단축 API인 .click, .keypress, keyup 등으로 이벤트 캐치를 하지 못합니다.
하지만 해결책이 있는데요. 그것은 바로 .live 입니다.
저 코드를 통해 지속적으로 처리를 할 수 있게 됩니다.
< 여러개의 선택된 DOM 객체 중 클릭 된 객체 선택하기 >
예를 들어 여러개의 DIV 를 선택 후 예) $("div")
클릭 된 객체에만 무언가를 해주고 싶거나 클릭 된 객체의 css만 변경하거나
attribute를 알아내거나 변경해주고 싶거나
안의 값을 바꿔주고 싶을 텐데요.
중요한 건 내가 정확하게 원하는 객체를 선택하는 것입니다.
이렇게 여러개 DIV 객체 중 클릭 된 객체의 내용인 숫자가 alert창에 뜨게 됩니다.
< 반복해서 사용할 DOM 객체 그룹은 기억해두고 사용하기 >
사실 jQuery에서 $("div") 을 반복해서 사용하게 되면
sizzle이라는 엔진이 매번 모든 div 태그를 탐색하게 됩니다.
이건 상당히 비효율적인데요.
어떤 처리를 해줄 때 한번만 선택한다면 상관없지만
반복적으로 $("div")를 사용하게 된다면 속도가 저하될 수 있습니다.
따라서 간단히
이전 방식보다 불필요한 탐색을 하지 않기 때문에 속도가 향상됩니다.
< 문자열 합치는 연산은 배열을 활용하는게 더 좋다? >
이건 사실 jQuery 팁이라고 하긴 뭐하고, 그냥 JavaScript 팁인데요.
문자열을 합칠 때 단순히
이런식으로 하는 것보다
이렇게 해주는 것이 더 연산이 빠릅니다.
연산이 더 빠르다는 증거 자료입니다.
그래서 저는 보통 AJAX 요청을 통해 DOM을 생성 하거나 할 때
소스 가독성을 위해 Line By Line, 문자열로 HTML 소스를 JavaScript 소스 안에서
써 내려가는데요. 이 때 Line By Line 을 해야 하기 때문에
문자열을 붙여야 하죠. 이게 길수도 있고 짧을 수도 있기 때문에
(이게 여러개의 DOM일수록 합칠 문자열이 길어지기 때문)
저는 이렇게 배열과 join을 사용해서 문자열을 합칩니다.
"어 이게 왜 안돼지?" 하는 상황이 종종 생깁니다.
제가 jQuery를 1.4.2 버전 때 첨 접하고 나서
지금까지 쭉 써오고 있는데
제가 모든 API를 섭렵하고 매일매일
jQuery를 Heavy하게 쓰는 유저는 아니지만
경험을 통해 얻은 팁 몇가지가 있습니다.
< DOM이 다 로드 된 이후에 처리하기 >
DOM이 다 로드 된 이후에 처리하지 않으면
아무리 셀렉터를 이용해서 선택을 한들 DOM 객체를 인식하지 못하고
공들여 쓴 JavaScript + jQuery 소스가 제대로 작동하지 않게 되는데요.
기본적이지만 짚고 넘어가겠습니다.
$(document).ready(function() { // Source Code Start });
또는
$(function() { // Source Code Start });이렇게 해주면 저 안에 소스 코드를 작성하면
모든 DOM이 로드 된 이후에 저 코드를 실행하게 됩니다.
< 동적으로 생성된 DOM에 해당되는 이벤트 처리하기 >
동적으로 생성된 DOM 같은 경우에는 jQuery의 일반적인 이벤트 리스너인
.bind 또는 단축 API인 .click, .keypress, keyup 등으로 이벤트 캐치를 하지 못합니다.
하지만 해결책이 있는데요. 그것은 바로 .live 입니다.
$("#example").live('click', function(e) { // Source Code Start });이렇게 해주면 example이라는 Id를 가지고 있는 DOM 객체가 지워졌다 생성되었다 하더라도
저 코드를 통해 지속적으로 처리를 할 수 있게 됩니다.
< 여러개의 선택된 DOM 객체 중 클릭 된 객체 선택하기 >
예를 들어 여러개의 DIV 를 선택 후 예) $("div")
클릭 된 객체에만 무언가를 해주고 싶거나 클릭 된 객체의 css만 변경하거나
attribute를 알아내거나 변경해주고 싶거나
안의 값을 바꿔주고 싶을 텐데요.
중요한 건 내가 정확하게 원하는 객체를 선택하는 것입니다.
$("div").click(function() { alert( $(this).html() ); });이렇게 해주면
<div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div>
이렇게 여러개 DIV 객체 중 클릭 된 객체의 내용인 숫자가 alert창에 뜨게 됩니다.
< 반복해서 사용할 DOM 객체 그룹은 기억해두고 사용하기 >
사실 jQuery에서 $("div") 을 반복해서 사용하게 되면
sizzle이라는 엔진이 매번 모든 div 태그를 탐색하게 됩니다.
이건 상당히 비효율적인데요.
어떤 처리를 해줄 때 한번만 선택한다면 상관없지만
반복적으로 $("div")를 사용하게 된다면 속도가 저하될 수 있습니다.
따라서 간단히
var divs = $("div");이렇게 해주면 매번 $("div") 할 필요 없이 divs를 활용하여 DOM 객체에 접근하기 때문에
이전 방식보다 불필요한 탐색을 하지 않기 때문에 속도가 향상됩니다.
< 문자열 합치는 연산은 배열을 활용하는게 더 좋다? >
이건 사실 jQuery 팁이라고 하긴 뭐하고, 그냥 JavaScript 팁인데요.
문자열을 합칠 때 단순히
var sentence = "Inspired"; sentence += " "; sentence += "Programming"; sentence += " "; sentence += "By"; sentence += "InspiredJW"; alert( sentence );
이런식으로 하는 것보다
var sentence = [ 'Inspired', 'Programming', 'By', 'InspiredJW' ]; alert( sentence.join(' ') );
이렇게 해주는 것이 더 연산이 빠릅니다.
연산이 더 빠르다는 증거 자료입니다.
그래서 저는 보통 AJAX 요청을 통해 DOM을 생성 하거나 할 때
소스 가독성을 위해 Line By Line, 문자열로 HTML 소스를 JavaScript 소스 안에서
써 내려가는데요. 이 때 Line By Line 을 해야 하기 때문에
문자열을 붙여야 하죠. 이게 길수도 있고 짧을 수도 있기 때문에
(이게 여러개의 DOM일수록 합칠 문자열이 길어지기 때문)
저는 이렇게 배열과 join을 사용해서 문자열을 합칩니다.
'jQuery' 카테고리의 다른 글
JavaScript에서 문자열 위치, 배열 위치 알아내기 (0) | 2012.03.27 |
---|---|
jQuery를 활용하여 DIV 및 브라우저 창의 스크롤의 끝 이벤트 알아내기 (5) | 2012.03.22 |
jQuery 애니메이션을 순차적으로 적용하기 (0) | 2012.02.20 |
jQuery와 함께하는 신나는 자바스크립트! (0) | 2012.02.04 |
Comments