웹 기초 18강 - jQuery
jQuery는 자바스크립트를 쉽게 쓸 수 있도록 만든 라이브러리
jQuery 파일을 다운로드하는 방법
1. jQuery는 http://www.jquery.com에서 다운로드
다운로드 후 사용
2.구글이나 마이크로소프트에서 제공하는 CDN을 사용하여
jQuery 파일을 포함하는 방법
공개 서버로부터 네트워크를 통하여 웹페이지를 실행할 때마다 다운로드 받을 수도 있다 :
(CDN:Content Delivery Network)방식
jQuery CDN
Google CDN
Microsoft CDN
script방식 =>document.getElementById('result1').style.backgroundColor ='red';
jQuery방식 =>$('#result1').css('background-color', 'red')
스크립트에서 html요소에 접근하기 위해서는
1. window.onload=function(){}
2. $(document).ready(function(){} - 사용시 라이브러리 있어야 함
$(...) 안에 선택자를 넣어서 원하는 요소를 선택하고, 선택된 요소에 대하여 여러 가지 조작을 한다.
$(‘h2’).css("background", "blue")
$(“p”).show() : 모든 <p> 요소들을 찾아서 화면에 표시한다.
$(“.group1”).slideup() : class=group1인 요소를 슬라이드업 방식으로 표시한다.
$(“#id9”).hide() : id=id9인 요소를 화면에서 감춘다.
jQuery는 메소드 체이닝이 가능
$(“h1”).css(“background-color”,”yellow”).css(“color”, “red”)
기본선택자
타입선택자 (요소선택자) html 태그
$(‘h1’) , $(‘p’)
여러 개의 태그 선택 : $(‘h1, p’).css(‘color’, ‘orange’);
.class 선택자 : $(‘.name’)
#id선택자 : $(‘#name’)
전체선택자 : $(‘’)
문서로드된 후에 호출되는 콜백 함수
1. window.onload = function(){ }
2. $(document).ready(function(){ })
3. $( function(){ })
$('h1').css('color','blue');
$('h1').first().css('color','red');
$('h1').eq(2).css('color','green');
컨텍스트는 검색의 시작점을 지정 , 생략하면 문서전체에서 검색
컨텍스트를 지정하면 그 하위로 검색 범위가 제한
var myJquery1 = $(“p”);
var myJquery2 = $(“p”, document.forms[2]);
$(‘p’, this) -> this안에 p this는 p의 부모가 됨
=> document는 ""로 묶을 수 없기 때문에 컨텍스트를 사용함
$(element) DOM 엘리먼트 를 인수로 전달하면 이 객체를 감싸는 jQuery 객체를 리턴 jQuery 메소드 사용가능var elem = document.getElementsByTagName(‘h1’)[0];
elem.style.color = ‘red’;
getElementsByTagName 메서드가 리턴하는 것은 DOM객체 배열이며
DOM 객체에 대해 css()나 text() html()같은 jQuery 메소드를 직접 호출할 수 없다
그래서 이 객체를 $()함수로 전달하여 jQuery 객체로 랩핑하면
여러 가지 편리한 jQuery 메소드를 호출 할 수 있다
$(elem).css(‘color’,’red’);
$(“html”), $(“html”, {propertis}) 인수로 전달된 html문자열로 새로운 엘리먼트를 직접 생성한다 생성된 엘리먼트를 DOM트리의 원하는 부분에 삽입하여 실행 중에 문서를 만들 수 있다 propertis 는새로 만들어진 요소의 속성, 이벤트 함수 등을 지정<body>
<button type=“button”>새로만들기</button>
<script>
var elem =$(‘<p id=‘p1’ onclick=“proc1()”>Hello jQuery.</p>')
elem.appendTo(‘body’);
</script>
<body>
test1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
/* window.onload=function(){
document.getElementById('result1').style.backgroundColor ='red';
$('#result1').css('background-color', 'red')//위와 같은 코드
} */
//위의 코드를 jQuery로 바꾸면 다음과 같다.
$(document).ready(function(){
$('#result1').css('background-color', 'red')
//document.getElementById('result1').style.backgroundColor ='red';
})
</script>
</head>
<body>
<div class="box">
실행시 result1의 배경색을 바꾼다<br>
스크립트를 body 위에 코딩<br>
스크립트에서 html요소에 접근하기 위해서<br>
window.onload=function(){}<br>
$(document).ready(function(){} - 사용시 라이브러리 있어야 함<br>
<br>
<button type="button">확인</button>
<div id="result1"></div>
</div>
</body>
</html>
test2
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="/jqpro/css/mystyle.css" type="text/css">
<script src="/jqpro/js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="box">
script의 위치를 body밑에 코딩<br>
html요소에 직접 접근 가능하다.<br>
window.onload = function(){} 문장이 없어도 실행됨<br>
$(document).ready(function(){ }) 문장이 없어도 실행됨<br>
<br>
<button type="button">확인</button>
<div id="result1"></div>
</div>
<script type="text/javascript">
$('#result1').css('background-color', 'green');
</script>
</body>
</html>
test3
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="/jqpro/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function proc1(){
//전체 배경색을 변경
$('*').css('background','yellow');
// h1요소의 글자색을 파랑
//document.getElementsByTagName('h1')[0].style.color='blue';
$('h1').css('color','blue');//전체 h1에 대한 style적용
//위의 코드는 아래 코드를 한줄로 쓴 것
//var vh = $('h1');
//vh.css('color','blue');
//id가 para인 요소의 글자색은 녹색
//document.getElementById('para').style.color = 'green';
$('#para').css('color','green');
//class 가 sample요소의 글자색은 빨강
//document.getElementsClassName('sample')[0].style.color = 'red';
$('.sample').css('color','red');
}
</script>
</head>
<body>
<div class="box">
<br>
<br>
<button type="button" onclick="proc1()">확인</button>
<div id="result1">
<h1> 제목입니다 </h1>
<h2 id="para"> 작은 제목입니다 </h2>
<h2 class="sample"> 샘플입니다 </h2>
</div>
</div>
</body>
</html>
클릭하이드
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function proc1(vh){
$(vh).hide();
}
$(document).ready(function(){
$('#result2 h2').on('click',function(){//콜백함수
this.style.display="none"; //dom객체, dom객체방식으로 코딩
//$(this).hide(); //jQuery객체, jQuery방식으로 코딩
})
})
</script>
</head>
<body>
<div class="box">
h2요소를 클릭하면 화면에서 사라진다<br>
<h2 onclick="proc(this)">
<br>
<div id="result1">
<h2 onclick="proc1(this)">클릭하면 사라집니다1.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다2.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다3.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다4.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다5.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다6.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다7.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다8.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다9.</h2>
<h2 onclick="proc1(this)">클릭하면 사라집니다10.</h2>
</div>
</div>
<div class="box">
h2요소를 클릭하면 화면에서 사라진다<br>
스크립트에서 h2요소에 클릭이벤트 설정<br>
$('#result2 h2').on('click',function(){ })
<br>
<div id="result2">
<h2>클릭하면 사라집니다1.</h2>
<h2>클릭하면 사라집니다2.</h2>
<h2>클릭하면 사라집니다3.</h2>
<h2>클릭하면 사라집니다4.</h2>
<h2>클릭하면 사라집니다5.</h2>
<h2>클릭하면 사라집니다6.</h2>
<h2>클릭하면 사라집니다7.</h2>
<h2>클릭하면 사라집니다8.</h2>
<h2>클릭하면 사라집니다9.</h2>
<h2>클릭하면 사라집니다10.</h2>
</div>
</div>
</body>
</html>
문서로드후 콜백
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('h1').css('color','blue');
$('h1').first().css('color','red');
$('h1').eq(2).css('color','green');
})
/*
$(document).ready(function(){
$('h1')
})
window.onload = function(){
$('h1')
}
*/
//$('h1') - 아직 body태그가 실행되지 않아서 이렇게 사용 불가
</script>
</head>
<body>
<div class="box">
문서로드된 후에 호출되는 콜백 함수<br>
1. window.onload = function(){ }<br>
2. $(document).ready(function(){ })<br>
3. $( function(){ })<br>
<br>
$('h1').css('color','blue');<br>
$('h1').first().css('color','red');<br>
$('h1').eq(2).css('color','green');<br>
<br>
<div id="result1">
<h1>무궁화 꽃이 피었습니다</h1>
<h1>바람에 낙엽이 춤을 춥니다</h1>
<h1>꼭꼭 숨어라 머리카락 보일라</h1>
<h1>꼭꼭 숨어라 머리카락 보일라</h1>
<h1>꼭꼭 숨어라 머리카락 보일라</h1>
</div>
</div>
</body>
</html>
컨텍스트
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//모든 p태그를 선택
$('p').css('border','2px solid blue');
//클릭한 div(this) 내부의 p태그를 선택
$('.box div').on('click', function(){
$('p',this).css('font-size', '+=3px')
})
//첫번째 form 내부의 p태그를 선택
$('p',document.forms[0]).css('background','yellow');
})
</script>
</head>
<body>
<div class="box">
//모든 p태그를 선택<br>
$('p').css('border','2px solid blue');<br>
<br>
//클릭한 div(this) 내부의 p태그를 선택<br>
$('.box div').on('click', function(){<br>
$('p',this).css('font-size', '+=3px')<br>
})<br>
<br>
//첫번째 form 내부의 p태그를 선택 <br>
$('p',document.forms[0]).css('background','yellow');<br>
<br>
<div>
<p>무궁화 꽃이 피었습니다</p>
</div>
<p>흰 눈이 펄펄 내려옵니다</p>
<form>
<p>우리집 강아지는 복슬 강아지</p>
</form>
<div>
<p>무궁화 꽃이 피었습니다</p>
</div>
</div>
</body>
</html>
jQuery 랩핑
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
function proc1(){
//dom객체 =>.css사용 불가
var elem = document.getElementById('result1');
elem.style.background='blue';
//dom객체인 elem에 $()로 감싸면 jquery로 변환된다.
//elem.css('background', 'green'); ===> 오류
$(elem).css('background', 'green');
}
$(function(){
$('#btn').on('click', function(){
//elem은 dom객체 변수
//css()함수를 사용하기 위해서 $(elem)
var elem = document.getElementById('result2');
$(elem).css('background','yellow');
//jq는 jquery객체 변수
var jq = $('result2');
jq.css('background','pink');
})
})
</script>
</head>
<body>
<div class="box">
이벤트 설정<br>
1. 태그요소에서 : <button type="button" onclick="proc1()"><br>
<br>
<button type="button" onclick="proc1()">확인</button>
<div id="result1"></div>
</div>
<div class="box">
이벤트 설정<br>
2. script에서 : <br>
$('#btn').on('click', function(){})<br>
$('button').eq(1).on('click', function(){})<br>
<br>
<button type="button" id="btn">확인</button>
<div id="result2"></div>
</div>
</body>
</html>
새로운 요소 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<style>
img{
width: 200px;
height: 200px;
}
</style>
<script type="text/javascript">
//function proc1(){
//}
/*
//html body태그의 버튼 태그에 onclick=""이 없을 때
$(function(){
$('button').eq(0).on('click', function(){
})
$('button').eq(1).on('click', function(){
})
})
*/
proc2 = () =>{
//vimg = $('<img onclick="alert(\'hello\')" src="../images/가구1.jpg" alt="가구1.jpg">');
vimg = $('<img>', {
'src' : '../images/가구1.jpg',
'alt' : '가구1.jpg',
'click' : function(){
alert('Hello')
}
})
vimg.appendTo($('#result2'));
}
proc1 = () =>{
ptag = $('<p id="p1" onclick="alert(\'hello\')">Hello</p>');
//$('#result1').append(ptag);
ptag.appendTo($('#result1'));
//-----------------------------------------------------//
/* ptag = document.createElement('p');
ptag.id = 'p1'; //ptag.setAttribute('id', 'p1');
ptag.onclick = function(){
alert("Hello");
}
txt = document.createTextNode("Hello");
ptag.appendChild(txt);
document.getElementById('result1').appendChild(ptag); */
}
</script>
</head>
<body>
<div class="box">
버튼을 클릭하면 p태그를 생성하여 result1에 추가한다<br>
<br>
<button type="button" onclick="proc1()">확인</button>
<div id="result1"></div>
</div>
<div class="box">
버튼을 클릭하면 img태그를 생성하여 result2에 추가한다<br>
<br>
<button type="button" onclick="proc2()">확인</button>
<div id="result2"></div>
</div>
</body>
</html>
이미지생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('button').on('click', function(){
vimg = $('<img>',{
'src' : '../images/가구1.jpg',
'alt' : '가구1.jpg',
'click' : function(){ //()=>일 때는 this가 람다함수 자신임
$(this).css('border','5px solid red') //이 this는 img이다
}
})
vimg.appendTo($('#result1'))
})
})
</script>
</head>
<body>
<div class="box">
이미지생성 버튼을 클릭하면 새로운 이미지를 생성하여 result1에 추가한다
<br>
<button type="button">이미지생성</button>
<div id="result1"></div>
</div>
</body>
</html>
Author And Source
이 문제에 관하여(웹 기초 18강 - jQuery), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gksmf6699/웹-기초-18강-jQuery저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)