Javascript와 jQuery 비교
예제. 탭을 클릭했을 때 포커스를 변경하는 예제
JavaScript
<html>
<head>
<script type="text/javascript">
function addEvent(target, eventType,eventHandler, useCapture) {
if (target.addEventListener) { // W3C DOM
//target:첫번째 인자,window window.addEventListener가 존재하느냐
target.addEventListener(eventType,eventHandler,useCapture?useCapture:false);
} else if (target.attachEvent) { // IE DOM
//window가 targetattach가 있는지 확인
var r = target.attachEvent("on"+eventType, eventHandler);
}
}//브라우저가 무엇인지, 브라우저에 따라 다름; 크로스 브라우저 이슈
function clickHandler(event) {//system이 event라는 인자, 객체 전달
//현재 사용자가 클릭한 엘리먼트의 값이 들어있음
var nav = document.getElementById('navigation');
for(var i = 0; i < nav.childNodes.length; i++) {
var child = nav.childNodes[i];
if(child.nodeType==3)//node타입: 엘리멘트의 속성,
continue;
child.className = '';
//child: li엘리먼트들. 클래스네임에 공백을 대입. 클래스를 해제
}
event.target.className = 'selected';
}
addEvent(window, 'load', function(eventObj) {//제일먼저 실행되는 함수
//window객체는 브라우저 자체를 의미함. window객체가 load를 발생시켰을때,
//웹페이지에 대한 로드가 끝났을때 function(eventObj)을 system이 호출함
//시스템이 function을 실행시킴
var nav = document.getElementById('navigation');//인자로 navigation전달
//id가 nav인 변수에 navigation을 할당. nav에는 ul이 담겨있음
for(var i = 0; i < nav.childNodes.length; i++) {
//nav변수에 childNode라는속성이 있음, length : 자식이 몇개있는지.
var child = nav.childNodes[i];
//child라는 변수 선언. childNodes라는 배열안에
if(child.nodeType==3)
//nodeType:특정한 엘리먼트의 성격. 3번: 공백
continue;//skip
addEvent(child, 'click', clickHandler);
//child:li변수
}
})
</script>
<style type="text/css">
#navigation li {
list-style:none;//li앞에 검은색 점이 없어짐
float:left;//일렬로
padding:5px;
}
#navigation {
cursor:pointer;
}
#navigation .selected {//클래스명이 selected인 경우가 있다면
background-color:red;
color:white;
}
</style>
</head>
<body>
<ul id="navigation">
<li>HTML</li>
<li>CSS</li>
<li>javascript</li>
<li class="selected">jQuery</li>
<li>PHP</li>
<li>mysql</li>
</ul>
</body>
</html>
jQuery
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$('#navigation li').live('click', function() {
//id값이 navigation인것 중에 li 엘리먼트를 가져옴. live라는 제이쿼리가 제공하는 일종의 이벤트api를 실행
// click을 받았을때 function을 실행했을 때 아래 호출
$('#navigation li').removeClass('selected');
//selected라는 클래스 네임 삭제. 암시적으로 for문 돌리고있음
$(this).addClass('selected');
//이벤트 핸들러가 실행됬을때 사용자가 현재 클릭한 엘리먼트=this
//$로 감싸줬을때 제이쿼리 api사용가능. this있는 값의 클래스 네임을 selected로 바꿔줌
})
</script>
<style type="text/css">
#navigation li {
list-style:none;
float:left;
padding:5px;
}
#navigation {
cursor:pointer;
}
#navigation .selected {
background-color:red;
color:white;
}
</style>
</head>
<body>
<ul id="navigation">
<li>HTML</li>
<li>CSS</li>
<li>javascript</li>
<li class="selected">jQuery</li>
<li>PHP</li>
<li>mysql</li>
</ul>
</body>
</html>
'__ > jQuery' 카테고리의 다른 글
[생활코딩] 6강. Event (0) | 2021.01.24 |
---|---|
[생활코딩] 5강. Chain & Traversing (0) | 2021.01.24 |
[생활코딩] 4강. 선택자 (0) | 2021.01.24 |
[생활코딩] 3강. wrapper (0) | 2021.01.24 |
[생활코딩] 1강. jQuery란? (0) | 2021.01.24 |