이 예제에서는 코드를 최대한 줄여보는것을 해보겠습니다.
제이쿼리는 같은 코딩이라도 어떻게 줄이느냐의 센스가 필요합니다.
그럼 일단 센스가 제일 떨어지는(?) 첫 예제를 봅시다. ^^;
등록일 : ,
코드를 최대한 줄여보자

비교 대상이될 예제
해야할 것
- 닫기 버튼을 누르면 강조된 항목이 초기화
- 그리고 목록이 감춰져야 함
닫기 버튼을 눌러보세요 ^^
그리고 나서 열기 버튼도 눌러보세요 ~
- 닫기 버튼을 누르면 강조된 항목이 초기화
- 그리고 목록이 감춰져야 함
닫기 버튼을 눌러보세요 ^^
그리고 나서 열기 버튼도 눌러보세요 ~
뉴칼레도니아 가고일 도마뱀붙이
살찐꼬리 난장이 여우원숭이
윌리암슨 수액빨이 딱다구리
쿠비어 난장이 카이만
큰꼬리 검은 찌르레기 사촌
CSS
.animals div {
background-color:#efefef;
border:1px solid silver;
margin:3px;
padding:5px;
}
.animals div.on { /* 선택된 항목 강조 */
background-color:#999;
color:#fff;
border-color:#444;
}
HTML
<div class="animals">
<div>뉴칼레도니아 가고일 도마뱀붙이</div>
<div class="on">살찐꼬리 난장이 여우원숭이</div>
<div>윌리암슨 수액빨이 딱다구리</div>
<div>쿠비어 난장이 카이만</div>
<div>큰꼬리 검은 찌르레기 사촌</div>
</div>
<div style="text-align:center;">
<button type="button" onclick="gogogo()">닫기</button>
<button type="button" onclick="$('.animals').show()">열기</button>
</div>
자바스크립트
function gogogo(){
$('.animals .on').removeClass('on'); // animals 클래스 요소안에 on 클래스를 찾아서 그 on 클래스 제거
$('.animals').hide(); // animals 클래스 요소 안보이게 하기 - display:none;
}
사실 이렇게 해도 큰 문제는 없습니다. 코드도 단순하고 말이죠.
1미터 이동하는데 시속 100km 로 가나 50km 로 가나 뭐 그게 그거인거죠.. (비유가 맞나 ㄷㄷ)
하지만 1km 를 가야한다면 상황은 달라지겠죠..
마음의 소리가 들리지 않나요? 아냐 저건 뭔가 아니야 .. 좀 더 뭐가 있을거야.. 이런..
실행 가능한 소스
캐시를 사용하자 !!
캐시를 사용하는 방법이 있습니다. 어려운건가? 라고 생각할 수 도 있겠지만
예제를 보시면 아무것도 아닙니다.
캐시는 자주 사용하는건 그냥 기억하고 있겠다 뭐 그런 의미입니다.
예제를 보시면 아무것도 아닙니다.
캐시는 자주 사용하는건 그냥 기억하고 있겠다 뭐 그런 의미입니다.
뉴칼레도니아 가고일 도마뱀붙이
살찐꼬리 난장이 여우원숭이
윌리암슨 수액빨이 딱다구리
쿠비어 난장이 카이만
큰꼬리 검은 찌르레기 사촌
HTML
<div class="animals">
<div>뉴칼레도니아 가고일 도마뱀붙이</div>
<div class="on">살찐꼬리 난장이 여우원숭이</div>
<div>윌리암슨 수액빨이 딱다구리</div>
<div>쿠비어 난장이 카이만</div>
<div>큰꼬리 검은 찌르레기 사촌</div>
</div>
<div style="text-align:center;">
<button type="button" onclick="gogogo()">닫기</button>
<button type="button" onclick="$('.animals').show()">열기</button>
</div>
자바스크립트
function gogogo(){
var $el = $('.animals'); // $el 변수에 결과를 담아서 사용합니다. 이 변수를 이용하면 캐시 효과 !
$('.on', $el).removeClass('on'); // animals 클래스 요소안에 on 클래스를 찾아서 그 on 클래스 제거 ^^;
$el.hide(); // animals 클래스 요소 안보이게 하기 - display:none;
}
$el = $('.animals') 처럼 변수를 만들어서 사용합니다.
$('.animals') 를 여러번 사용하는 대신 $el 을 여러번 사용하는게 더 이득입니다.
자주 사용한다면 변수로 만들어 두고 그 변수를 가져다 쓰면됩니다.
뭐 두번만 쓸거면 살짝고민이 되겠네요. 세번이라도 ㅎㅎ
※ 예제에서 el 은 element 를 의미하는 줄임말 입니다.
실행 가능한 소스
더더더더~! 좀 더
좀 더 줄여보겠습니다.
뉴칼레도니아 가고일 도마뱀붙이
살찐꼬리 난장이 여우원숭이
윌리암슨 수액빨이 딱다구리
쿠비어 난장이 카이만
큰꼬리 검은 찌르레기 사촌
HTML
<div class="animals">
<div>뉴칼레도니아 가고일 도마뱀붙이</div>
<div class="on">살찐꼬리 난장이 여우원숭이</div>
<div>윌리암슨 수액빨이 딱다구리</div>
<div>쿠비어 난장이 카이만</div>
<div>큰꼬리 검은 찌르레기 사촌</div>
</div>
<div style="text-align:center;">
<button type="button" onclick="gogogo()">닫기</button>
<button type="button" onclick="$('.animals').show()">열기</button>
</div>
자바스크립트
function gogogo(){
$('.on', $('.animals').hide() ).removeClass('on'); // 더 줄었죠. ㅎㅎ
// $('.animals').hide() 는 실행후 $('.animals') 가 반환됩니다.
// 반환된 $('.animals') 를 다시 재 사용합니다.
// $('셀렉터', $요소) 이런 방법을 씁니다.
}
$('.on', $('.animals').hide() ).removeClass('on')
캐시는
쓰지 않았지만 원하는것을 간단히 해결했습니다.
$('.animals').hide()
는 실행이 끝나면 $('.animals') 를 반환하게
됩니다.
그걸 그대로 받아서 다시 사용했습니다.
실행 가능한 소스
완벽하게 체인캐스팅으로 가보자
위 예제에서는 $('.on', $('.animals').hide() ) 같은 코딩을 사용했습니다.
체인캐스팅은 한줄로 줄줄이 엮어서 사용하는것 인데요.
위 같은 코드는 한줄로 엮었다라고 보기엔 좀 아닌듯한 느낌입니다.
자 그럼 find 메서드를 사용해서 완벽하게 한줄로 엮어보겠습니다.
체인캐스팅은 한줄로 줄줄이 엮어서 사용하는것 인데요.
위 같은 코드는 한줄로 엮었다라고 보기엔 좀 아닌듯한 느낌입니다.
자 그럼 find 메서드를 사용해서 완벽하게 한줄로 엮어보겠습니다.
뉴칼레도니아 가고일 도마뱀붙이
살찐꼬리 난장이 여우원숭이
윌리암슨 수액빨이 딱다구리
쿠비어 난장이 카이만
큰꼬리 검은 찌르레기 사촌
HTML
<div class="animals">
<div>뉴칼레도니아 가고일 도마뱀붙이</div>
<div class="on">살찐꼬리 난장이 여우원숭이</div>
<div>윌리암슨 수액빨이 딱다구리</div>
<div>쿠비어 난장이 카이만</div>
<div>큰꼬리 검은 찌르레기 사촌</div>
</div>
<div style="text-align:center;">
<button type="button" onclick="gogogo()">닫기</button>
<button type="button" onclick="$('.animals').show()">열기</button>
</div>
자바스크립트
function gogogo(){
$('.animals').hide().find('.on').removeClass('on'); // 완벽하게 체인캐스팅 ?
// $('.animals').hide() 하고 find 메서드로 on 클래스 찾기
}
코드 자체도 굉장히 직관적 입니다.
animals 클래스를 숨기고 on 클래스를 찾은 다음 제거해라.
이렇게 코딩해 두면 여러모로 좋습니다.
실행 가능한 소스

저의 센스는 여기까지 입니다. 더 좋은(!) 코딩 방법이 더 있을거라고 생각됩니다.
제이쿼리가 분명 편하기는 합니다. 정말 편하죠. 하지만 역시 최적화가 중요합니다.
제이쿼리를 마스터 했다고(?) 하더 라도 비슷한 코드를 남발하는 코딩을 한다면 .. 안되겠죠.
매일 매일이 헬로월드인 요즘 ㄷㄷㄷ
이 글이 조금이라도 도움이 되었으면 하는 바램입니다.
즐거운 코딩 되시길 바랍니다.
제이쿼리가 분명 편하기는 합니다. 정말 편하죠. 하지만 역시 최적화가 중요합니다.
제이쿼리를 마스터 했다고(?) 하더 라도 비슷한 코드를 남발하는 코딩을 한다면 .. 안되겠죠.
매일 매일이 헬로월드인 요즘 ㄷㄷㄷ
이 글이 조금이라도 도움이 되었으면 하는 바램입니다.
즐거운 코딩 되시길 바랍니다.
방문해 주셔서 감사드립니다 !!