edu day 44, 45, 46
모든 브라우저에서 동작하는 자바스크립트 오픈소스 라이브러리이다.
- DOM과 관련된 처리 쉽게 구현
- 일관된 이벤트 연결 쉽게 구현
- 시각적 효과 쉽게 구현
- Ajax 애플리케이션 쉽게 구현
jQuery 공식 사이트에 들어가 다운로드 하면
사용할 수 있다.
<script type="text/javascript" src="jquery-2.2.1.js"></script>
❗CDN 방식??
<script type="text/javascript" src="../jquery-3.5.1.min.js"></script>
앞으로 CDN 방식으로 계속 사용할 것이다.
$(selector).action();
$
문자는 jQuery를 선언하거나 접근할 때 사용한다.
$
문자는 'jQuery' 문자의 별칭(alias)이다.jQuery(selctor).action();
과 동일
일반적으로$
문자를 주로 사용한다.- selector는 CSS의 선택자를 의미한다.
- action()는 HTML에서 특정 이벤트가 발생할 때 실행되는 함수이다.
$(document).ready(함수명)
😁document 객체의 ready 이벤트 연결
<script>
$(document).ready(function(){
});
</script>
🤔window 객체의 load 이벤트 연결
<script>
window.onload = function(){
};
</script>
[ selector ]
선택자 종류 | 표현식 | 설명 |
---|---|---|
All Selector | $("*") | HTML DOM의 모든 Element 선택 |
Element Selector | $("tag") | 지정된 tag와 일치하는 모든 Element 선택 |
ID Selector | $("#id") | 지정된 id와 일치하는 Element 선택 |
Class Selector | $(".class") | 지정된 class와 일치하는 모든 Element 선택 |
Multiple Selector | $("tag1, tag2") | 지정된 tag1, tag2와 일치하는 모든 Element 선택 |
js : 선택시 태그가 그대로 선택
input type = "text" :value
div, span의 글씨 :innerText
,innerHTML
jQeury : $("선택자") 선택한 태그가 태그 아닌 fn으로 표시됨 => jquery객체
input type = "text" :val()
함수 사용
div, span의 글씨 :text()
,html()
CSS의 가장 기본적인 선택자는 전체 선택자인 Wildcard Selector 이다.
HTML 페이지에 있는 모든 문서 객체를 선택하는 선택자.
$(document).ready(function(){
$("*").css("color","red"); //document.getElementsByTagName().style=""
//css(속성이름, 속성값)
});
,
이용$(document).ready(function(){
var x = $("p"); //jquery
console.log(x);
console.log(x[0].innerText,x[1].innerText); //p태그 innerText사용
//console.log(x[0].text()); // 배열에서 p태그 자체가 선택되었기 때문에 jquery 선택자 사용 불가
console.log($("div"));
var x2 = $("div");
console.log(x2[0].innerText, x2[1].innerText);
}
--> p태그를 뽑아온 x는 태그형태이기 때문에 text()
선택자를 사용할 수 없다.
getElementById()
와 동일한 기능 $(document).ready(function(){
var a1 = $("#a");
console.log(a1.text());
var a2 = document.getElementById("a");
console.log(a2.innerText);
var a3 = $(a2);
console.log(a3.text());
var a4 = $("#a2");
a4.css("color","red");
console.log(a4.text());
a1.text("Hi"); //정상 값 변경
// a2.innerText("Hi"); //innerText 사용 불가
})
getElementsbyClassName()
과 동일한 기능. $(document).ready(function(){
console.log("첫번째 myClass>>", $(".myClass").first().text());
console.log("마지막 myClass>>", $(".myClass").last().text());
var m = $(".myClass");
console.log(m[0].innerText);
var mLen = $(".myClass").length;
console.log(mLen);
for (var i = 0; i < mLen; i++) {
console.log(m[i].innerText);
}
console.log("-----------------------");
for (var i = 0; i < mLen; i++) {
var a = $(m[i]);
console.log(a.text());
}
});
--> 태그 선택자 처럼 배열로 값을 받기 때문에 index로 값을 얻을 수 있고 for문을 통해 전체 값을 얻을 수 있다.
CSS에서 배운 내용이다.
선택자 종류 | 표현식 | 설명 |
---|---|---|
Child Selector | $("parent > child") | 부모요소 바로 아래 자식요소를 반환 |
Descendant Selector | $("ancestor descendant") | 조상요소 아래 일치하는 모든 자손요소 반환 |
Next Adjacent Selector | $("prev + next") | prev요소 바로 다음에 오는 형제요소 반환 |
Next Siblings Selector | $("prev ~ siblings") | prev요소 이후 형제요소중 siblings와 동일한 형제요스들을 반환 |
- 자식을 선택하는 선택자
부모 > 자식
의 형태로 사용
- 자손을 선택하는 선택자
요소A 요소B
의 형태로 사용한다.
- 같은 레벨(Level)의 형제 오소들 중에서 바로 뒤에 인접한 형제요소 접근
요소A + 요소B
의 형태로 사용한다.
- 같은 레벨(Level)의 형제 요소들 중에서 뒤의 모든 형제요소 접근
요소A ~ 요소B
의 형태로 사용한다.
마찬가지로 css에서 배웠다.
기본 선택자 뒤에 붙여 사용 가능하다.
선택자 형태 | 설명 |
---|---|
요소[속성] | 특정 속성을 가지고 있는 문서 객체를 선택한다. |
요소[속성=값] | 속성 안의 값이 특정 값과 같은 문서 객체를 선택한다. |
요소[속성~=값] | 속성 안의 값이 특정 값을 단어로써 포함하는 문서 객체를 선택한다. |
요소[속성^=값] | 속성 안의 값이 특정 값으로 시작하는 문서 객체를 선택한다. |
요소[속성$=값] | 속성 안의 값이 특정 값으로 끝나는 문서 객체를 선택한다. |
요소[속성*=값] | 속성 안의 값이 특정 값을 포함하는 문서 객체를 선택한다. |
- 지정된 속성과 일치하는 모든 요소 접근
- [속성] 형식으로 사용시 검색 대상은 모든 html 태그 대상
- 요소[속성] 형식으로 사용시 요소 중에서 [속성]과 일치하는 요소 접근
$(function(){
$("a[href]").css("color","red").css("font-size","40px");
});
- 지정된 속성="값"과 일치하는 모든 요소 접근
- [속성] 형식으로 사용시 검색 대상은 모든 html 태그 대상
- 요소[속성] 형식으로 사용시 요소 중에서 [속성]과 일치하는 요소 접근
https://daum.net
에 해당하는 요소 선택하여 옵션추가 $(function(){
$("[href='https://daum.net']").css("color","red");
$("[href!='https://daum.net']").css("color","red");
});
- 지정된 속성값으로 시작하는 요소 및 끝나는 요소 접근
$(function(){
$("a[href^='https']").css("color","red");
//https로 시작하는 요소 접근
$("a[href$='.net']").css("color","red");
//.net로 끝나는 요소 접근
});
- 지정된 속성값이 포함된 요소 및 공백으로 정확하게 구분된 요소 접근
$(function(){
$("a[href*='www']").css("color","red");
//www가 포함된 요소 접근
});
마찬가지로 다양한 방식으로 원하는 요소를 걸러낸다.
:
기호를 사용하며 대부분 일반 선택자와 같이 사용하지만 단독으로 사용 가능하다.
- Basic Filter
- Child Filter
- Form Filter
- Content Filter
표현식 | 설명 |
---|---|
:animated | 애니메이션이 동작중인 모든 요소 반환 |
:eq(index) | index에 해당하는 요소 반환. 음수값을 지정하면 마지막 요소부터 count된다. (0부터 시작) |
:even | 짝수 요소를 반환 (0부터 시작) |
:odd | 홀수 요소를 반환 (0부터 시작) |
:first | 첫 번째 요소를 반환. eq(0)과 동일하다 |
:last | 마지막 요소를 반환 |
:gt(index) | index보다 큰 index에 해당하는 요소를 반환. 음수값을 지정하면 마지막 요소부터 count된다. (0부터 시작) |
:li(index) | index보다 작은 index에 해당하는 요소를 반환. 음수값을 지정하면 마지막 요소부터 count된다. (0부터 시작) |
:not(selector) | selector와 일치하지 않는 모든 요소를 반환 |
:focus | 현재 포커스 받은 요소를 반환 |
<style type="text/css">
div{
background: red;
border: 1px solid blue;
width: 70px;
height: 70px;
margin: 0 3 px;
float: left;
}
.toggleWidth{
width:40px;
}
</style>
<script type="text/javascript" src="../jquery-3.5.1.min.js"></script>
<script type="text/javascript">
$(function(){
/* $("#run").click(function(){//1. 선택자.이벤트명(처리함수)
$(":animated").toggleClass("toggleWidth");
}); */
$("#run").on("click", function(){//2. 선택자.on(이벤트, 처리함수)
$(":animated").toggleClass("toggleWidth");
});
function animateIt(){
$("#ani").slideToggle("slow", animateIt);
}
animateIt();
});
</script>
--> id가 run인 button을 클릭할 때 마다 :animated
를 사용하여 동작중인 애니메이션 요소에 접근하고, 그 요소에 toggleWidth
클래스가 실행되게 한다.
$(function(){
//전체문서 중 first 1
var x = $(":first");
console.log(x); //html
//전체문서
var x = $(":last");
console.log(":last>>", x);
console.log(":last>>", x.text());
//ul한정 : 첫번째ul
var x = $("ul:first");
console.log(x);
//li한정
var x = $("li:last");
console.log(x);
//모든 자식들 중 첫번째 자식
var x = $(":first-child");
console.log(":first-child",x);
//지정된 ul의 부모기준
var x = $("ul:first-child");
console.log("ul:first-child", x);
//ul의 첫번째 자식
var x = $("ul > :first-child");
console.log("ul > :first-child", x);
var x = $("ul > :last-child");
console.log("ul > :last-child", x);
})
--> first-child
: 부모를 기준으로 첫 자식
last-child
: 부모를 기준으로 마지막 자식
var x = $("ul > :last-child");
console.log("ul > :last-child", x);
console.log(x.text());
var x1 = $(x);
for (var i = 0; i < x1.length; i++) {
console.log(x1[i].innerText);
console.log($(x1[i]).text());
}
--> 콘솔창에서 fn.init
형태인지, 태그
형태인지 파악하는게 중요하다.
지정된 요소의 부모 요소를 대상으로 일치하는 index에 해당하는 자식 반환 (index는 1부터)
$(function(){
//부모 기준의 자식 하나만 있는 것을 선택
var x = $("h1:only-child");
console.log(x);
// x.css("color", "red");
//li 태그의 짝수
var x = $("li:nth-child(2n)"); //nth-child는 인덱스 1부터 시작
// x.css("color","red");
//li 태그의 짝수
var x = $("li:nth-child(even)");
console.log("li:nth-child(even)>>>", x);
// x.css("color", "yellow");
//li 태그의 홀수
var x = $("li:nth-child(odd)");
console.log("li:nth-child(odd)>>>", x);
// x.css("color", "yellow");
var x = $("li:even"); //인덱스 0부터 시작
console.log("li:even>>",x);
x.css("color", "yellow");
var x = $("li:odd"); //인덱스 0부터 시작
console.log("li:odd>>",x);
x.css("font-size", "40px");
})
$(function(){
var x = $("li:eq(2)");
console.log("li:eq(2)",x.text()); //2번째 인덱스 요소 반환. 0부터 시작
x.css("color", "red");
//greater than 모든 li선택 후
//2번째 인덱스보다 큰 요소 반환 (3번째 부터 css 적용)
var x = $("li:gt(2)");
console.log("li:gt(2)", x);
x.css("color", "red");
//5번째 인덱스보다 작은 요소 반환 (4번째 부터 css 적용)
var x = $("li:lt(5)");
console.log("li:li(5)",x);
x.css("color", "red");
});
--> gt
와 lt
는 지정한 인덱스의 다음 인덱스부터 적용된다.
또한 인덱스는 0부터 시작한다.
<script type="text/javascript">
$(function(){
$("input").click(function(){
console.log($("input"));
$("input:focus").css("background-color", "yellow");
$("input:not(:focus)").removeAttr("style"); //focus 이외의 모든 스타일 삭제
}); //end click
}) //end doc
</script>
</head>
<body>
<input type="text" value="one"></input>
<input type="text" value="two"></input>
<input type="text" value="three"></input>
</body>
--> input
태그 요소를 클릭할 때로 이벤트를 두었고, 어떤 것을 클릭했는지 :focus
를 통해 접근하여 스타일 적용.
해당 focus가 아닌 나머지는 removeAttr
을 통해 스타일 삭제.
input 태그 중에서 type속성이 button 또는 <button>
태그 반환.
활성화된 요소 및 비활성화된 요소 반환
$(function(){
console.log("실행>>>>>>>>");
$("#disable").on("click",function(){
$("input[type='text']:enabled").removeAttr("enabled");
$("input[type='text']").attr("disabled", "disabled");
});
$("#enable").on("click",function(){
$("input[type='text']:disabled").removeAttr("disabled");
$("input[type='text']").attr("enable", "enable");
});
})
type속성이 checkbox 요소 반환. (type = "checkbox"와 동일)
속성이 checked 또는 selected된 요소 반환.
(checkbox, radio, select 태그에 사용)
<script type="text/javascript">
$(function(){
//check의 부모인 span에 스타일 저장
$(":checked").wrap("<span></span>").parent().css("border", "3px dotted red");
//처음 시작 화면에 checked된 것을 선택
$("input:text").val($("input:checked").val());
})
</script>
<body>
사과<input type="checkbox" checked="checked" value="사과"><br>
배<input type="checkbox" value="배"><br>
바나나<input type="checkbox" value="바나나"><br>
<input type="radio" checked="checked" value="aaa">
<input type="text">
</body>
📒### Content Filter
표현식 | 설명 |
---|---|
:contains(text) | text와 일치하는 문자열이 존재하는 요소를 반환한다. 대소문자 구별한다. |
:empty | 자식요소가 존재하지 않고 텍스트값이 비어 있는 요소를 반환한다. |
:has(selector) | 지정된 selector가 자식 요소로 존재하는 모든 요소를 반환한다. |
:parent | 자식 요소가 존재하거나, 텍스트값을 가지고 있는 요소를 반환한다. |
지정한 text문자열이 존재하는 해당 요소를 반환
대상 요소 및 하위 요소까지 검색
<script type="text/javascript">
$(function(){
//특정문자열 찾기 (대소문자 구별, 자식 포함해서 찾는다.)
$("div:contains('Hello')").css("color", "red");
});
</script>
</head>
<body>
<div>Hello !!!!</div>
<div>Hi! hello</div>
<div>MyHello , good</div>
<div>
<p>Hello</p>
</div>
</body>
--> 'Hello' 가 포함된 문자열을 찾는다.
자식태그인 <p>
까지 요소로 적용되는 것을 확인할 수 있다.
:parent
: :empty
와 반대되는 선택자
:empty
: <input>
,<img>
,<hr>
,<br>
태그 등이 :empty
필터 선택자에 의해 선택되는 요소이다.
<script type="text/javascript">
$(function(){
//자식이 있는 요소 반환
$("td:parent").css("color","red");
// $("td:not(:empty)").css("color","red");
//자식이 없는 요소 반환
$("td:empty").css("background-color","blue");
});
</script>
</head>
<body>
<table border="1">
<tr><td>TD #0</td><td></td></tr>
<tr><td>TD #2</td><td></td></tr>
<tr><td></td><td>TD#5</td></tr>
</table>
</body>
지정된 selector를 포함한 모든 요소를 반환한다.
$(function(){
//특정 selector을 포함하는 요소 찾기 (태그를 포함하는지)
$("div:has(p)").css("color", "red");
});
1차적으로 선택자에 의해서 찾은 요소들을 다시 2차 필터링하거나 새로운 요소를 추가하거나 하는 작업을 할 때는 Traverse 관련 메서드를 사용하게 된다.
- Filtering
- Miscellaneous Traversing
- Tree Traversal
셀렉터를 통해 얻은 객체에서 다시 필터링 가능하다.
메서드 | 설명 |
---|---|
.eq | index 와 일치하는 요소를 반환한다. index는 0부터 시작하고 음수 값 사용 가능하다. |
.filter(expr) | 지정된 expr과 일치하는 요소를 반환한다. |
.filter(fn) | 지정된 함수(fn)과 일치하는 요소를 반환한다. |
.not(expr) | 지정된 expr과 일치하지 않는 요소를 반환한다. |
.not(fn) | 지정된 함수(fn)과 일치하지 않는 요소를 반환한다. |
.is(expr) | 지정된 expr과 일치하는 요소가 하나라도 있으면 true를 반환하고, 아니면 false를 반환한다. |
.is(fn) | 지정된 함수(fn)와 일치하는 요소가 하나라도 있으면 true를 반환하고, 아니면 false를 반환한다. |
.has(selector) | 지정된 selector를 포함하는 요소를 반환한다. |
.first() | 첫 번째 요소를 반환한다. |
.last() | 마지막 요소를 반환한다. |
.map(fn) | 1차 선택자에 의해 검색된 요소들을 함수(fn)을 통해서 원하는 작업을 수행한 후에 배열로 반환한다. |
.slice(start[,end]) | start번째부터 end번쨰까지의 요소를 반환한다. end가 생략되면 마지막까지 요소를 반환한다. 0부터 시작 |
앞서 배운 :eq(index)
선택자와 기능이 거의 동일하지만 차이점은 .eq(index)
메서드 뒤에 메서드 체인 형태로 다른 Traverse 관련 메서드를 추가 사용 가능하다.
대표적으로 .end()
메서드를 사용할 수 있으며, 이 메서드는 traverse 메서드를 사용하기 이전 상태로 복귀할 수 있는 메서드이다.
$(function(){
$("li").eq(0).css("color","red")
.end()
.eq(2).css("color", "blue")
.end()
.eq(5).css("color", "yellow");
});
--> 이런식으로 <li>
태그의 지정한 index의 요소를 반환하고, .end()
메서드를 통해 추가적으로 메서드를 사용할 수 있다.
expr는 expression으로서 선택자(selector) 및 jQuery 표현식을 의미.
1차로 검색된 요소들(필터링된 DOM)을 대상으로 검색이 이루어짐. 추가적으로 필터링 해야하는 경우에 사용한다.
$(function(){
//1차 필터링 후 2차 필터링 (일치하는 selector) 반환
$("li").filter(".my").css("color", "red") //.class 접근
.end()
.filter("#a").css("color", "green")
.end()
.filter(":even").css("font-size","40px").end() //index 0 부터 시작
});
fn은 function이고 일반적인 표현식으로 나타내기 어려운 경우에 별도의 함수를 이용해 설정할 수 있다.
즉 필터 기능을 정해진 선택자가 아닌 필요한 기능을 새로 확장해서 사용하는 효과를 얻을 수 있다.
//1차 검색 결과를 기준으로 다시 2차 필터링(함수사용), return 결과만 사용함
$(function(){
$("li").filter(function (idx, ele){ //인덱스, 요소를 받음
console.log(idx, ele.innerText); //js 객체
// return ele.innerText=="A4"; //A4와 같은 요소 검색, 자바스크립트 명령을 사용
return $(ele).text()=="A4";
}).css("color", "red")
.end()
.filter(function (idx, ele){
return idx%3==0 ;
}).css("font-size", "40px").end();
});
.filter 메서드와 반대되는 개념이다.
일치되지 않는 요소를 반환한다.
$(function(){
$("li").not(".my").css("color", "red")
.end()
.not(":even").css("font-size", "40px"); //index 0부터
});
--> my
클래스가 아닌 요소에 color:red
속성 적용.
--> 인덱스가 짝수가 아닌 요소(홀수)에 font-size:40px
적용
--> .not
도 .filter
처럼 필터값에 function을 넣는 것이 가능하다.
expr과 일치하는 요소가 하나라도 있으면 true값을 반환하고 아니면 false값을 반환한다.
일반적으로 if 조건문과 같이 사용된다.
$(function(){
//1차 필터링 후 2차 선택자와 일치하는 요소가 있으면 true, 없으면 false
var x = $("li").is(".my");
console.log(x);
});
--> li
태그 요소 중 my
클래스를 갖는 요소가 하나라도 있다면 true
를 반환한다.
$(function(){
var x = $("li").is(function(idx, ele){
// console.log(ele.innerText);
// return $(ele).text() == "A8";
console.log(this.innerText);
return this.innerText == "A8";
});
console.log(x);
});
--> li
태그 요소 중 innerText 값이 'AB'인 요소가 있다면 true
를 반환한다.
.selector (아래 예시에선 li
에 해당) 를 포함하는 요소를 반환한다.
$(function(){
$("li").has("ul").css("background-color", "yellow");
})
-->li
태그에 ul
태그가 존재하는 요소들 전체(li
, ul
둘 다) 스타일 적용.
.selector의 배열에서 첫번째 요소와 마지막 요소를 반환한다. 예시는 생략하겠다.
선택자에 의해 반환된 요소들을 함수를 사용하여 가공하고 결과를 배열로 반환한다.
반환된 텍스트를 소문자/대문자 등으로 변경하는데 사용된다.
$(function(){
var arr = $("li").map(function(idx,ele){
console.log("this>>",this,"ele>>", ele, "ele.innerText", ele.innerText,
"$(this).text()>>", $(this).text()); //fn함수 사용
// return ele.innerTet.toLowerCase();
return $(this).text().toLowerCase(); // 소문자 변경
});
console.log("arr>>", arr);
})
선택자에 의해 반환된 요소 중에서 부분 요소를 얻을 때 사용
start는 시작 위치(0부터), end는 마지막 위치이다.(end-1까지)
end를 생략하면 요소의 마지막 까지이다.
$(function(){
$("li").slice(4).css("color", "red") //4부터 (end 생략. 4까지 아님)
.end()
.slice(0, 3).css("font-size", "40px");
});
기존 검색요소에 expr
과 일치하는 검색요소를 추가한다.
주의할 점은 메서드명이 add
이기 때문에 새로운 요소가 기존 요소에 생성/추가되는 것이 아니다.
$(function(){
$("li").add("ul").contents().css("color","red");
// $("li").find("ul").contents().css("color","red"); 동일하다.
});
--> 선택자 li
중 ul
에 해당하는 요소에 속성 적용.
text를 포함한 모든 자식 요소를 반환한다.
보통 .filter()
및 .find()
메서드와 주로 사용되며 인자가 없는 메서드이다.
$(function(){
//li를 검색, 또한 p도 검색 $("div, p")와 동일하다. 두개의 태그를 검색
$("li").add("p").css("color","red");
});
메서드 | 설명 |
---|---|
.children([selector]) | 선택된 요소에서 selector와 일치하는 자식 요소를 반환한다. selector 생략시 모든 자식 노드를 반환한다. (자손 포함 안됨) |
.find([selector]) | 선택된 요소에서 selector와 일치하는 하위(자식 및 자손) 요소를 반환한다. |
.next([selector]) | 선택된 요소에서 selector와 일치하는 다음 형제요소를 반환한다. selector 생략시 바로 다음 형제요소를 반환한다. |
.nextAll([selector]) | 선택된 요소에서 selector와 일치하는 모든 다음 형제요소를 반환한다. selector 생략시 바로 다음 형제요소 모두 반환한다. |
.parent([selector]) | 선택된 요소에서 selector와 일치하는 부모 요소를 반환한다. 부모 요소가 여러 개인 경우에는 배열로 반환한다. |
.parents([selector]) | 선택된 요소에서 selector와 일치하는 조상 요소를 반환한다. selector 생략시 html태그를 포함한 모든 조상요소를 반환한다. |
.prev([selector]) | 선택된 요소에서 selector와 일치하는 바로 앞의 형제 요소를 반환한다. selector 생략시 바로 앞 형제요소를 반환한다. |
.prevAll([selector]) | 선택된 요소에서 selector와 일치하는 앞의 모든 형제 요소를 반환한다. selector 생략시 앞의 모든 형제요소를 반환한다. |
.sibllings([selector]) | 선택된 요소에서 selector와 일치하는 앞과 뒤의 모든 형제요소를 반환한다. selector 생략시 앞과 뒤의 모든 형제요소를 반환한다. 결국 해당 선택자를 제외한 모든 형제요소를 반환한다는 것이다.(부모X) |
메서드 명칭이 가진 의미랑 똑같이 동작하니 자연스럽게 필터링을 사용하면 되겠다.
사용법은 위와 동일하니 예제는 생략하도록 하겠다.😋
jQuery의 메서드를 사용하여 태그 속성을 제어하는 방법이다.
❗자주쓰이니 중요하다
메서드 | 설명 |
---|---|
.attr(속성명) | 지정된 속성명에 해당되는 속성값을 반환한다. 일치하는 요소가 많으면, 처음 일치하는 요소가 반환된다. |
.attr(속성명, 속성값) | 지정된 속성명에 속성값을 설정한다. 일치하는 요소가 많으면 모두 설정된다. |
.removeAttr(속성명) | 지정된 속성명과 일치하는 모든 속성을 제거한다. |
.val() | 선택된 요소의 값을 반환한다. |
.val(값) | 선택된 요소에 값을 설정한다. |
.text() | 선택된 요소의 자손을 포함한 text값을 반환한다. 포함된 html태그는 모두 포함되어 반환된다. |
.text(값) | 선택된 요소에 text값을 설정한다 |
.html() | 선택된 요소의 자손을 포함한 text값을 반환한다. 포함된 html태그는 모두 포함되어 반환된다. |
.html(값) | 선택된 요소에 text값을 설정한다. html포함 가능. |
.addClass | 선택된 요소에 className에 해당되는 class속성을 설정(추가)한다. 한꺼번에 여러 개의 속성값을 설정할 수 있고, 기존에 class속성이 존재하면 마지막에 추가된다. |
반복적으로 요소를 가져오기 위해서는 .each()
메서드나 .map()
메서드를 일반적으로 같이 사용한다.
$(function(){
$("button").click(function(){ //button은 image 없기 때문에 this 사용 불가
var x = $("#img").attr("src");
if("a.jpg" == x)
$("#img").attr("src", "b.jpg");
else
$("#img").attr("src", "a.jpg");
console.log($("#img").attr("src"));
});
});
--> .attr(속성명)
을 이용해 속성값을 얻고, .attr(속성명,속성값)
으로 해당 요소의 속성명을 지정하여 값을 바꿀 수 있다.
위의 예는 button을 이용해 사진을 바꾸는 예제이다.
input
, select
, textarea
같은 폼 관련 태그에서 값을 가져올 때 사용한다.
일반적으로 선택 또는 체크된 요소를 찾기 위해서 :selected
또는 :checked
선택자와 같이 사용된다.
$(function(){
$("button").on("click", function(){
$("#passwd2").val($("#passwd").val());
console.log($("#userid").val(), $("#passwd").val());
})
});
--> button 클릭 이벤트에 passwd의 값을 passwd2의 값에 설정한다.
자손요소에 html태그가 포함되면 모두 제거된 후에 문자열만 반환된다.
input 또는 textarea의 값을 얻거나 설정하기 위해서는 .text()
가 아닌 .val()
메서드를 사용해야 한다.
$(function(){
$("button").click(function(){
var x = $("#x").text()
console.log(x);
$("#result").text(x);
})
});
-->p
태그 x의 innerText를 div
태그 result에 설정하는 예제이다.
.text()
메서드와 다르게 html형식의 문자열을 가져오거나 설정할 수 있다.
예제는 생략하겠다.
선택된 요소의 존재 유무를 boolean값으로 처리한다.
<script type="text/javascript">
$(function(){
//property(속성)검증 true, false 리턴
$("button").on("click", function(){
console.log($("#my").attr("checked")); //checked
console.log($("#my").prop("checked")); //true
console.log($("#my2").prop("checked")); //false
})
})
</script>
</head>
<body>
A<input id="my" type="checkbox" name="my" checked="checked"><br>
B<input type="checkbox" name="my2" id="my2"><br>
<button>OK</button>
</body>
선택된 요소에 className에 해당되는 class속성이 존재하면 제거하고, 존재하지 않으면 설정한다.
addClass(className)
과 removeClass(className)
메서드를 번갈아 실행시키는 것과 동일하다.
<style type="text/css">
.highlight{
background: yellow;
}
</style>
<script type="text/javascript" src="../jquery-3.5.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("p").on("click", function(){
//css주의
console.log(this);
$(this).toggleClass("highlight"); //css에 클래스 제작
})
});
</script>
--> 모든 p태그를 클릭할 때 마다 highlight
클래스가 설정/삭제 된다.
동시에 여러 개의 속성값을 설정할 수도 있고 기존에 class속성이 있으면 덮어쓰기 되지 않고 기존 속성값의 뒤에 추가된다.
$(function(){
$("#b1").click(function(){
$("#a1").addClass("selected highlight");
})
$("#b2").click(function(){
$("p").removeClass("selected highlight");
})
$("#b3").click(function(){
$("#a2").toggleClass("selected highlight");
})
});
--> id가 b1인 버튼을 클릭하면 highlight
클래스를 적용한다.
--> id가 b2인 버튼을 클릭하여 모든 p태그의 highlight
클래스를 삭제한다.
jQuery 메서드를 사용하여 DOM을 추가하거나 삭제 및 수정 또는 복사와 같은 처리를 손쉽게 할 수 있다.
HTML화면에 없던 특정 값을 보여주거나 또는 화면에 있던 값을 수정하거나 삭제할 수 있는(동적인 HTML화면)을 손쉽게 구현할 수 있다.
메서드 | 설명 |
---|---|
❗append(content) | 선택된 요소의 text노드 위치에 content를 설정한다. 대상요소에 text값이 존재하면 text값 뒤에 추가된다. |
prepend(content) | 선택된 요소의 text노드 위치에 content를 설정한다. 대상요소에 text값이 존재하면 text값 앞에 추가된다. |
wrap(html) | 선택된 요소를 지정된 html로 에워싼다. |
empty() | 선택된 요소의 text값을 포함한 모든 자식(자손포함)요소의 값을 제거한다. (태그는 그대로 남아있다.) |
❗remove([selector]) | 선택된 모든 요소가 제거된다. (태그까지 전부 제거한다.) 만약 selector를 지정하면 selector와 일치하는 요소를 제거한다. |
content는 html, 문자열, Element가 될 수 있고, 한꺼번에 여러 content를 설정할 수도 있다.
$("button").click(function(){
//아래 두개 예제는 같다.
$(".my").append("<span>장군</span>"); //기존 내용 뒤에 추가
$("<span>장군</span>").appendTo($(".my")); //기존 내용 뒤에 추가 $주의
$(".my").append($("h1")); //기존 태그의 이동
})
--> button을 click할 때 my클래스에 장군
이라는 html을 붙이는 예제이다.
--> 기존 h1태그는 my클래스 뒤에 이동한다.
<--> 만약 .prepend
면 반대로 장군이 앞에 붙는다.
append 및 prepend와 다르게 이동되지 않고 복사(copy)된다.
지정된 html에 text값이 포함될 경우 text값은 타겟 요소 앞에 위치하게 된다.
$(function(){
$("button").click(function(){
$(".my").wrap("<div style='background:yellow' class='new'></div>");
// $(".my").wrapAll("<div style='background:yellow' class='new'></div>");
})
});
--> my클래스를 div
태그로 감싸서 스타일을 적용시킨다.
$(function(){
//태그는 남아있고 값만 지워진다.
$("button").click(function(){
$(".my1").empty(); //해당 요소를 포함한 모든 자식의 값 제거
})
//태그까지 전부 제거한다.
$("button").click(function(){
$(".inner").remove();
});
});
jQuery에서 배열을 순회하거나 배열을 필터링하거나 또는 데이터를 배열 형식으로 변경하거나 배열 복제, 데이터의 공백제거, XML 및 JSON 파싱처리 방법과 같이 효율적으로 사용 가능한 유틸리티 메서드이다.
배열 또는 Map 형태의 반복되는 데이터를 손쉽게 순회하면서 얻어올 수 있다.
만약 데이터를 모두 순회하지 않고 중간에 순회를 멈추고 반복을 빠져나오기 위해서는 콜백함수 내에서false
값을 return하면 된다.
$(function(){
var s = ["A", "B", "C", "D", "E"];
for (var i = 0; i < s.length; i++) {
console.log("data>>>", s[i]);
}
console.log("======");
$.each(s, function (idx, data){ //idx, 값
console.log(idx, data);
})
$(s).each(function (idx, data){ //idx, 값
console.log(idx, data);
})
console.log("======");
//Json
var s2={"one":100, "two":200, "three":300};
$.each(s2, function(key, data){
console.log(key, data);
})
console.log("======");
var s3 = ["A", "B", "C", "D", "E"];
$.each(s3, function(idx, data){
console.log("s3>>>", idx, data);
return data != "C"; //return false인 경우 break 기능 //c인경우 false 리턴
})
})
--> 일반 for문을 통해 배열 값을 얻을 수도 있고 , $.each(object,function)
을 통해 값을 얻을 수 있다.
--> Json형도 마찬가지로 값을 순회할 수 있다.
--> 배열을 원하는 값이 나와서 중간에 끝내고싶을 때 return 값을 이용해 반복을 빠져나올 수 있다.
jQeury Ajax
❗❗jQuery.ajax
아주 유용한 정보네요!