Front-end/jQuery

[jQuery]사용방법, 문법, 요소 값 변경/ 접근, 스타일 제어

PolarJin 2024. 10. 15. 15:05

 

크로스브라우징 문제를 해결하기 위해 제이쿼리가 등장. 편의성을 높임

 

*크로스브라우징: 웹 페이지 제작 시에 모든 브라우저에서 깨지지 않고 의도한 대로 올바르게(호환성) 나오게 하는 작업. HTML5, CSS3, JavaScript 작성 시 W3C의 웹 규격에 맞는 코딩을 함으로써 어느 브라우저, 기기에서 사이트가 의도된 대로 보여지고 작동되는 기법. 브라우저마다 랜더링 엔진이 다르기 때문에 크로스브라우징 작업이 필요.

 

*크로스브라우징 문제: 여러 웹 브라우저 간의 호환성 문제로 인해 발생. 

 

▶︎ jQuery 라이브러리 추가

jQuery 문법 사용을 위한 2가지 방법

둘 중 하나의 방식을 선택해서 하면 된다.

1. jQuery 파일을 다운받아 로드

<script src="js/jquery-3.4.1.min.js"></scipt>

2. CDN(Content Delievery Network)방식으로 압축되지 않은 버전 jQuery 라이브러리 가져오기

<script src="https://code.jquery.com/jquery-3.7.0.js" integrity="sha256-JlqSTELeR4TLqP0OG9dxM7yDPqX1ox/HfgiSLBj8+kM=" crossorigin="anonymous"></script>

 

▶︎ jQuery를 사용하는 방법

jQuery 문법

📌 $(요소명 | 선택자)

: $(..)안에 선택자를 넣어 원하는 HTML요소를 선택하여 jQuery객체(하나의 요소 또는 여러 개의 요소)로 반환

 

//1. 태그 가져오기
	//$를 인식할 수 없는 에러 -> 라이브러리 추가했는지 생각해볼 것
    let li_tags = $('li');
    console.log(li_tags);
    
    li_tags.css('color','red');

 

jQuery 문법

📌
$(요소명 | 선택자).동작 메소드();

: 요소선택자를 이용하여 원하는 HTML요소를 선택하고 동작 메소드를 정의하여 선택된 요소에 원하는 동작을 설정
//동작 메소드
	//2. 텍스트 가져오기/변경하기
    //JS -> innerText
    //jQuery -> text()
    let span_tag = $('span')
    //값 가져오기
    console.log(span_tag.text());
    //값 변경하기
    span_tag.text("Hello World!");

 

jQuery 요소 값 변경/ 접근

📌 .html(htmlString)
:HTML code(contents 포함)를 접근하거나 초기화하는 메소드
📌 .text(String)
:HTML요소의 contents(내용)만 접근하거나 초기화하는 메소드

 

 

jQuery 요소 값 변경/접근

JS-> innerHTML
jquery -> html()태그 요소를 추가하고 싶을 때 사용
//3. HTML contents 수정하기
let abc = $('#abc');
abc.html('<p>바나나</p>');
jQuery 요소 값 변경/접근

📌 $('h1').html();
:h1 요소의 HTML code(contents 포함)에 접근 => get 역할
📌 $('h1').html('<a href="#">jQuery</a>');
:h1 요소 안에 내용을 'jQuery'라는 내용을 가진 a태그로 변경 => set역할

 

 

jQuery 스타일제어

📌 .css(스타일속성, 값)
선택한 요소의 스타일 속성을 접근하거나 설정하는 메소드
//6. css변경하기
	$('span').css('color','green')

 

jQuery 스타일 제어

$('li').css('color','blue');
:li요소들의 글자색파란색으로 변경한다.

jQuery 스타일제어
h1 태그에 여러개의 스타일을 변경하는 방법

 

 

▶︎ jQuery추가 기능

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://code.jquery.com/jquery-3.7.0.js"
        integrity="sha256-JlqSTELeR4TLqP0OG9dxM7yDPqX1ox/HfgiSLBj8+kM=" crossorigin="anonymous"></script>
    <style>
        .newClass {
            color: red;
        }
    </style>
</head>

<body>
    <div id="area">
        <span>base</span>
    </div>
    <button id="append">append</button>
    <button id="prepend">prepend</button>
    <button id="after">after</button>
    <button id="before">before</button>
    <button id="remove">remove</button>
    <button id="empty">empty</button>
    <button id="addClass">addClass</button>
    <button id="removeClass">removeClass</button>
    <script>
        // 1. HTML Element 추가하기
        $('#append').click(() => {
            $('#area').append("<span>hello</span>") //append() : 요소 내부 content 뒤에 (자식으로)값 추가
        })

        $('#prepend').click(() => {
            $('#area').prepend("<span>hello</span>") //prepend() : 요소 내부 content 앞에 값 추가
        })
        $('#after').click(() => {
            $('#area').after("<span>hello</span>") //after() : 요소 뒤에 (형제요소로) 값 추가
        })
        $('#before').click(() => {
            $('#area').before("<span>hello</span>") //before() : 요소 앞에 값 추가
        })

        // 2. HTML Element 삭제하기

        $('#remove').click(() => {
            $('#area').remove("<span>hello</span>") //remove() : 태그 요소 삭제
        })
        $('#empty').click(() => {
            $('#empty').empty("<span>hello</span>") //empty() : 요소 내부 content 삭제, 태그요소는 그대로 유지
        })

        // 3. 요소 속성으로 class 추가/삭제
        $('#addClass').click(() => {
            $('#area').addClass('newClass')
        })

        $('#removeClass').click(() => {
            $('#area').removeClass('newClass')
        })

        //4. 부모/자식 요소 접근
        let p = $('#area > span').parent() //parent 부모요소에 접근가능
        console.log(p)//div태그 아래 있는 span 태그에 접근해서 다시 부모요소로 접근.

        let c = $('#area').children()//children 자식요소에 접근 
</script>
</body>

</html>