JS의 라이브러리 jQuery
개요
기존의 복잡했던 HTML스크립팅을 간소화 하기 위해 고안된 JS 라이브러리 jQuery는 JS보다 적응양의 코드로 다양한 기능을 제공한다
- 단점 : jQuery Library를 다운로드받아야한다 == 로딩속도가 길다.
#연결 코드
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="anonymous">
</script>
integrity와 crossorigin는 보안를 위해 필요하다고함 맥은 안된다는데 골때린다 ㅋㅋ
어떤 방식이든지 연결 순서를 상기할 필요성이 있다.
내가 기술한 JS 파일에서 jQuery를 사용한다면
jQuery가 먼저 로딩되어야한다는걸 명심하자
HTML문서는 위->아래로 해석된다.
아래쪽에 작성되 미해석된 코드는 위쪽 코드에서 호출할 수 없다.
이런 경우에 onload,ready()를 이용해 위쪽에서 작성해도
문서의 로딩이 끈나는 시점에 해석할 수 있다
- 코드가 미해석 되서 오류가 발생하는 경우가 없다(모든 요소들이 로딩된 상태여서)
- 먼저 해석되는 코드의 양이 많으면 요소 수행시간이 뒤쳐질 수 있다.
* window.onload / ready() 차이점
-window.onload.는 페이지 내에서 딱 한번만 작성할 수 있다
(중복 작성 시 마지막 내용이 적용된다)
-ready()는 여러번 작성 가능
ready() 작성 방법 3가지
1) jQuery(document).ready(function(){ 코드; });
2) $(document).ready(function(){ 코드; });
( '$' 기호는 jQuery를 의미한다. )
3) $(function(){ 코드; });
jQuery는 요소를 선택할 때
$("CSS 선택자") 또느 $(요소가 저장된 변수) 형식으로 작성
배열 요소 접근 향상된 for문은
for - of 이다
for(let i of list){ i.style.backgroundColor="yellow"; }
list라는 배열에 하나씩 접근해 배경색에 스타일을 지정해준다 이때 i는 배열 자체를 이미해 list[i]의 형태로 호출하지 않아도 된다.
js안에 향상된 형태가 많아서 헷갈린다 ㅋㅋ
for-of는 배열 / for-in은 객체였던거 같다.
[JS]
- 요소 . innerText : 요소 가져오기 (태그 X)
- 요소 . innerText = "내용" : 요소 내용 출력 (태그는 해석 X)
- 요소 . innerHTML : 요소 가져오기 (태그 포함)
- 요소 . innerHTML = "내용" : 요소 내용 출력 (태그는 해석 O)
-input요소.value : input요소에 작성된 값 얻어오기.
-input요소.value = "값": input요소에 값 출력하기.
[jQuery]
-$("단일 선택자.").text() : 요소 내용 얻어오기 ( 태그 X)
-$("단일 선택자.").text("내용") : 요소 내용 출력하기 ( 태그 해석 X)
-$("단일 선택자.").html() : 요소 내용 얻어오기 ( 태그 포함)
-$("단일 선택자.").html("내용") : 요소 내용 출력하기 ( 태그 해석 O)
-$("input요소 선택자").val(): input요소에 작성된 값 얻어오기
-$("input요소 선택자").val("값"): input요소에 값 출력하기
[js]
-요소.parentElement : 요소의 부모요소
-요소.children : 요소의 모든 자식(배열)
-요소.previousElementSibling : 요소 이전 형제요소
-요소.nextElementSibling : 요소 이후 형제요소
[jQuery]
-$("단일 선택자").parent( ) : 요소의 부모요소 선택
-$("단일 선택자").children()
: 요소의 모든 자식요소 선택
-$("단일 선택자").children("css선택자")
: 요소의 모든 자식요소 중 css 선택자가 일치하는 요소만 선택
-$("단일 선택자").prev() : 요소 이전 형제요소
-$("단일 선택자").next() : 요소 이후 형제요소
parents() : 모든 부모 (모든 상위 요소)
parentUntil(선택자) : 현재 요소부터 선택자 요소까지 모든 상위 요소
find(선택자) : 후손 중 선택자가 일치하는 모든 후손
siblings() : 모든 형제 요소
prevAll() : 이전 모든 요소 // nextAll() : 다음 모든 요소
prevUntil(선택자) : 이전 모든 형제 요소중 선택자가 일치하는 요소전 까지의
nextUntil(선택자) : 다음 모든 형제 요소중 선택자가 일치하는 요소 전까지
여러가지 지원되는 메서드의 양이 굉장히 많은대
주로 class나 아이디 기준으로 탐색하게 될 것 같다.
//jQuery
$(".input3").on("input",(el)=>{
$($(el.target).prev()).css("background-color",$(el.target).val()).css("transition","1s");
$(el.target).css("outline","2px solid "+$(el.target).val());
//el이 이벤트가 발생한 요소의 정보를 담고 있다.
//$(this) 로 선택해도 된다.
//지금 나는 화살표 함수 써서 안된다. 왜 안되나 했네.
//console.log($(this).val());
})
//-------------------------------------------------
//js
const temp = document.querySelectorAll(".input3");
//js로 클래스에 이벤트 추가하려면 하나하나 수작업으로 넣어줘야한다.
for(let i of temp){ //for - of 배열용 향상된 for문
i.addEventListener("input",addColor);
}
function addColor(){
this.style.backgroundColor=this.value;
}