사용법
1.이렇게하면 로컬방식
- 우리는 cdn을 이용한 연결방식을 사용
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="" href="">
<style>
</style>
<!-- cdn 연결 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
// DOM tree가 브라우저 메모리에 완성되면(ready 이벤트),
// 일련의 제이쿼리 코드를 실행하라!
// jQuery Entry point
//$(선택자(내장객체))
$(document).ready(function(){
console.clear();
console.log('document ready...');
});//
// 단축형
$(function(){
console.clear();
console.log('document ready..2.')
});
$(function(){
console.log()
}
)
</script>
</head>
<body>
<script>
기본적인 스크립트의 위치는 여기다. 요소들을 다 읽고 난 후 처리하는 위치
</script>
</body>
</html>
▼잘못된 사용법!
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="" href="">
<style>
</style>
<!-- cdn 연결 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js" integrity="sha512-QDsjSX1mStBIAnNXx31dyvw4wVdHjonOwrkaIhpiIlzqGUCdsI62MwQtHpJF+Npy2SmSlGSROoNWQCOFpqbsOg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
//entry point를 준 jQuery
$(function(){
$('#txt').css('color', 'blue');
});// .jq
// jQuery의 잘못된 적용방법 -> entry point가 안되어있다
$('#txt').css('color', 'blue');
// css 메소드: 선택된 요소노드의 css스타일을 변경하는 제이쿼리 메소드
</script>
</head>
<body>
<p id="txt"> 내용</p>
</body>
</html>
▼이런식으로 람다를 사용할 수도 있다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="" href="">
<style>
</style>
<!-- cdn 연결 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js" integrity="sha512-QDsjSX1mStBIAnNXx31dyvw4wVdHjonOwrkaIhpiIlzqGUCdsI62MwQtHpJF+Npy2SmSlGSROoNWQCOFpqbsOg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function(){
$("#title").css('color','red');
}); //jq
$(()=>{
$("#title").css('color','blue');
});
</script>
</head>
<body>
<h3 id="title"> 하잉</h3>
</body>
</html>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="" href="">
<style>
</style>
<!-- cdn 연결 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js" integrity="sha512-QDsjSX1mStBIAnNXx31dyvw4wVdHjonOwrkaIhpiIlzqGUCdsI62MwQtHpJF+Npy2SmSlGSROoNWQCOFpqbsOg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
console.log('1. jQuery:' , jQuery);
console.log('2. typeof jQuery:' , typeof jQuery);
console.log('3. jQuery instanceof Funtion: ' , jQuery instanceof Function);
console.log('4. $:' , $);
console.log('5. typeof $:' , typeof $);
console.log('6. $ instanceof Funtion: ' , $ instanceof Function);
console.log('7. jQuery == $:', jQuery == $);
console.log('8. jQuery === $:', jQuery === $);
// jQuery 프로토타입이 무엇을 호출하는지 시그니쳐 확인 : 리턴타입이 JQuery
jQuery()
// 개체의 무수히 많은 제이쿼리 메소드들은 다시 제이쿼리 개체를 반환한다.
// 따라서 메소드 체이닝이 가능
$(document).ready(function(params){
console.log('- document.onload event handler invoked.');
console.log('-params: ' , params, params ===jQuery, params===$);
console.log(window.jQuery === window.$ , window.$ === jQuery, jQuery===$)
// jquery 함수나 $함수나 window의 멤버가 된돠.
// jquery와 $는 같다.
})
</script>
</head>
<body>
</body>
</html>
▼ jQuery 요소선택자 사용
<script>
$(function(){
$("h2").css('background-color','#ff0').css('border','2px solid #f00');
// css메서드의 반환은 JQuery 여서 또 css를 추가할 수 있다.
}); //jq
</script>
</head>
<body>
<h1>제이쿼리</h1>
<h2 >선택자</h2>
<h3>직접 선택자</h3>
</body>
▼ jQuery 그룹선택자 사용
<script>
$(function(){
// , << 그리고 라는 뜻/ 그룹 선택자
$("h1, #tit3").css('background-color','#ff0').css('border','2px solid #f00');
// css메서드의 반환은 JQuery 여서 또 css를 추가할 수 있다.
}); //jq
</script>
</head>
<body>
<h1>제이쿼리</h1>
<h2 >선택자</h2>
<h3 id="tit3">직접 선택자</h3>
<h3>인접 선택자</h3>
</body>
▼ jQuery 선택된 선택자에 특정 클래스 지정선택
<script>
$(function(){
// 소속 선택자 h1태그 중에 클래스속성명이 tit3 인 것!
$("h1.tit3").css('background-color','#ff0').css('border','2px solid #f00');
// css메서드의 반환은 JQuery 여서 또 css를 추가할 수 있다.
}); //jq
</script>
</head>
<body>
<h1 class="tit3">제이쿼리</h1>
<h2 >선택자</h2>
<h3 class="tit3">직접 선택자</h3>
<h3>인접 선택자</h3>
</body>
▼ jQuery 선택자의 부모요소 선택
<script>
$(function(){
// 선택자가 선택한 요소노드의 "부모요소"를 선택!
$("#list_1").parent().css('background-color','#ff0').css('border','2px solid #f00');
}); //jq
</script>
▼ 후손선택자와 css저장 방식
<script>
$(function(){
// 후손 선택자(공백으로 선택자를 구분) & css를 연관배열로 저장
$("#wrap h1").css({
'background-color':'#ff0',
"border": "2px solid #f00"
});
//제대로 된 것은 이거와 같은 객체 리터럴 방식을 통해 만듬
$("#wrap h1").css({
backgroundColor:'green', // 카넬기법
border: "2px solid #f00"
});
}); //jq
</script>
▼ 자식선택자 2가지방식
<script>
$(function(){
// 자식 선택자
$("#wrap > h1").css({
'background-color':'#ff0',
"border": "2px solid #f00"
});
//자식 선택자
$("#wrap h1").children().css({
backgroundColor:'green', // 카넬기법
border: "2px solid #f00"
});
}); //jq
</script>
<script>
$(function(){
let style1 = {
backgruoundColor: "#0ff",
border: "2px solid green"
}
let style2 = {
backgruoundColor: "#ff0",
border: "2px solid yellow"
}
// 클래스 선택자 + 인접형제 요소 선택(prev) 메소드
$('.txt').prev().css(style1); //바로 윗 형을 선택 (prev)
$('.txt + p').css(style2); // 인접형제 선택자 (아랫동생)
$('.txt').next().next().css(style2); // 바로 아랫 동생 선택 (next)
}); //jq
</script>
<script>
$(function(){
let style1 = {
backgruoundColor: "#0ff",
border: "2px solid green"
};
let style2 = {
backgruoundColor: "#ff0",
border: "2px solid yellow"
};
$('.txt').prevAll().css(style1); //선택한 요소노드의 모든 형들을 선택
$('.txt').nextAll().css(style2); // 선택한 요소노드의 모든 동생들을 선택
}); //jq
</script>
<script>
$(function(){
let style1 = {
backgruoundColor: "#0ff",
border: "2px solid green"
};
let style2 = {
backgruoundColor: "#ff0",
border: "2px solid yellow"
};
// 선택한 요소노드를 기준으로 , 지정된 형 요소가 나올때까지, 모든 형들을 선택
$(".txt3").prevUntil(".title")
.css(style1);
// 선택한 요소노드를 기준으로, 지정된 동생 요소가 나올때까지 모든 동생들을 선택
$(".txt3").nextUntil(".txt6")
.css(style2);
}); //jq
</script>
▼ 지정한 부모요소가 나올때까지 모든 부모노드 선택
<script>
$(function(){
// 선택한 요소노드를 기준으로, 모든 부모요소 노드를 선택
$(".txt1").parents()
.css({
border:"2px solid blue"
});
// 선택한 요소노드를 기준으로, 모든 부모요소 노드를 선택하되,
// 지정된 요소가 나올때까지만
$(".txt2").parents("div")
.css({
border:"2px solid #f00"
});
}); //jq
</script>
▼ 지정한 요소와 같은 가장 가까운 부모의 노드선택
<script>
$(function(){
// 선택한 요소노드를 기준으로, 윗부모 요소노드를 찾되 지정된 가장 가까운 부모노드를 선택
$(".txt1").closest("div")
.css({
border:"2px solid #f00"
});
}); //jq
</script>
▼ 인덱스가 생기는데 배열과도 같다.
<script>
$(function(){
// 요소 인덱스는 배열처럼 0부터 시작
// 공백으로 구분한 후손 선택자 + 구조적 가상 클래스 선택자 (:even 짝수번째 요소노드만 선택)
$("#menu li:even").css({
border:"2px solid black"
});
// 공백으로 구분한 후손 선택자 + 구조적 가상 클래스 선택자 (:odd 홀수번째 요소노드만 선택)
$("#menu li:odd").css({
border:"2px solid #f00"
});
}); //jq
</script>
오늘은 노드조작을 위해 css를 예로 보았지만 사실 css는 css파일에서만 해주는 것이 유지보수 측면에서 옳다하심!
css 선택자와 많이 비슷하다. 많이 알수록 조작할 때 편리하니까 좋긴하지만 중요한 것만 적어놓자