Backend
home

2024. 6. 21 - JQuery

JQuery

โ€ข
jQuery๋ž€?
โ—ฆ
๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
โ—ฆ
๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
โ—ฆ
ํ˜„์žฌ๋Š” ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‹ค์†Œ ๋–จ์–ด์ง„ ์ƒํ™ฉ
โ—ฆ
jQuery๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์ œ์ž‘๋จ
โ–ช
๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„
โ–ช
์ผ๊ด€๋œ ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„
โ–ช
์‹œ๊ฐ์  ํšจ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„
โ–ช
Ajax ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ
โ—ฆ
๋ฌธ์„œ๊ฐ์ฒด ์บ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ํŽธํ•จ
โ€ข
jquery ์˜ˆ์ œ
โ—ฆ
jquery ๊ฐ์ฒด, Interval
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jquery_1</title> <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> <script> // ํŽ˜์ด์ง€ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ ๋˜๊ณ  ๋‚˜์„œ ์‹คํ–‰ // $() => jquery ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค $(document).ready(function() { // ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ // window.onload // document.querySelectorAll('h2').forEach((item) => { // item.style.color = 'red' // }) $('h2').css('color', 'blue') // set / get // ์บ์ŠคํŒ….๋ฉ”์„œ๋“œ // ์บ์ŠคํŒ… => jquery ๊ฐ์ฒด ์ƒ์„ฑ ///////////////////////////////////// // input casting // $('input[type=text]').val('์•ˆ๋…•ํ•˜์„ธ์š”') // setter // let input_str = $('input[type=text]').val() let input_str = $('input:text').val() // ์œ„ ์ฝ”๋“œ์™€ ๊ฒฐ๊ณผ๋Š” ๋™์ผ console.log(input_str) // 5์ดˆ ํ›„์— ๋™์ž‘ setTimeout(() => { const selected_val = $('select > option:selected').val() console.log('selected_val >', selected_val) let input_str = $('input:text').val() console.log(input_str) const checked_val = $('input:checkbox:checked').val() console.log('checked_val >>', checked_val) if (!checked_val) { alert('ํ™•์ธํ•˜์„ธ์š”!!!') } }, 10000) // forEach.(์ฝœ๋ฐฑ (item, index, arr)) // $.each() => ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ // $.each(๋ฐฐ์—ด, ์ฝœ๋ฐฑ(index, item)) // $('selector').each(callback) let links = [ { name: '๋„ค์ด๋ฒ„', url: 'https://www.naver.com' }, { name: '๊ตฌ๊ธ€', url: 'https://www.google.com' }, { name: 'ํŽ˜์ด์Šค๋ถ', url: 'https://www.facebook.com' } ] let output = ''; $.each(links, (index, item) => { console.log(index, item) output += `<a href="${item.url}">${item.name}</a>\n<br>` }) console.log(output) // document.querySelector('#links').innerHTML=output $('#links').html(output) $('h2').each(function (index, item) { console.log(index, item.innerHTML, $(item).html()) }) }) $().ready(() => { }) </script> </head> <body> <div id="links"></div> <select> <option>2024</option> <option>2023</option> <option>2022</option> </select> <input type="checkbox"> ํ™•์ธ <hr> <input type="text" name="name" id="name" value="๋‚˜๋Š” ์†ํฅ๋ฏผ์ด๋‹ค."> <hr> <h2>header - 0</h2> <h2>header - 1</h2> <h2>header - 2</h2> <h2>header - 3</h2> <h2>header - 4</h2> </body> </html>
JavaScript
๋ณต์‚ฌ
โ—ฆ
ํƒ์ƒ‰
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jquery_2</title> <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> <script> // ํƒ์ƒ‰ : selector, filter() // $(selector).filter(selector) // $(selector).filter(callback) $(document).ready(() => { // ์ง์ˆ˜๋ฒˆ์งธ ์ธ๋ฑ์Šค๋งŒ ์„ ํƒ๋จ $('table tr').filter(':even').css('background-color', 'yellow') // ํ™€์ˆ˜๋ฒˆ์งธ ์ธ๋ฑ์Šค๋งŒ ์„ ํƒ๋จ $('h2').css('background', 'orange').filter(':odd').css('color', 'white') // 3๋ฒˆ์งธ ์š”์†Œ ์ ์šฉ $('h1').eq(3).css('color', 'red') // ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค $('h1').first().css('background-color', 'pink') // ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค $('h1').last().css('background-color', 'pink') // 3์˜ ๋ฐฐ์ˆ˜ $('h3').filter((index, item) => { console.log(index, item) return index % 3 == 0 }).css('color', 'blue') }) </script> </head> <body> <h3> header 13 </h3> <h3> header 23 </h3> <h3> header 33 </h3> <h3> header 43 </h3> <h3> header 53 </h3> <h3> header 63 </h3> <h3> header 73 </h3> <h3> header 83 </h3> <h3> header 93 </h3> <h3> header 103 </h3> <h1> header 1 </h1> <h1> header 1 </h1> <h1> header 1 </h1> <h1> header 1 </h1> <h1> header 1 </h1> <h1> header 1 </h1> <h2> header 2 </h2> <h2> header 2 </h2> <h2> header 2 </h2> <h2> header 2 </h2> <h2> header 2 </h2> <table border="1"> <tr> <td>1111</td> <td>2222</td> </tr> <tr> <td>3333</td> <td>4444</td> </tr> <tr> <td>5555</td> <td>6666</td> </tr> <tr> <td>1111</td> <td>1111</td> </tr> <tr> <td>1111</td> <td>1111</td> </tr> </table> </body> </html>`
JavaScript
๋ณต์‚ฌ
โ—ฆ
๋ฌธ์ž์—ด
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jquery_3</title> <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> <script> let xml = ` <links> <link> <name>๋„ค์ด๋ฒ„</name> <url>https://www.naver.com</url> </link> <link> <name>๊ตฌ๊ธ€</name> <url>https://www.google.com</url> </link> <link> <name>ํŽ˜์ด์Šค๋ถ</name> <url>https://www.facebook.com</url> </link> </links> ` let html_doc = '' $().ready(() => { // ๋ฌธ์ž์—ด => xml ๋ฌธ์„œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ // $.parseXML(๋ฌธ์ž์—ด) let xmlDoc = $.parseXML(xml) // ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋ฉ”์„œ๋“œ -> find(์—˜๋ฆฌ๋จผํŠธ ์ด๋ฆ„) 'link' $(xmlDoc).find('link').each(function(index, item) { console.log(index, item) let name = $(item).find('name').text() let url = $(item).find('url').text() console.log(name, url) html_doc += ` <div class="box"> <h1>${name}</h1> <p>${url}</p> </div> ` $('body').html(html_doc) // this ์‚ฌ์šฉ์‹œ item ์ƒ๋žต ๊ฐ€๋Šฅ // $(this) }) }) </script> <style> .box { border: 1px solid #aaa; } </style> </head> <body> </body> </html>
JavaScript
๋ณต์‚ฌ
โ—ฆ
๋ฌธ์„œ๊ฐ์ฒด ์ปจํŠธ๋กค
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jquery_4</title> <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> <style> .box { background-color: aquamarine; color: blue; float: left; width: 100px; height: 100px; border: 1px solid #000; margin: 10px; } .title { text-align: center; } </style> <script> // ๋ฌธ์„œ ๊ฐ์ฒด ์ปจํŠธ๋กค : // css(), attr(), removeAttr(), addClass(), removeClass() // html(), text() // remove(), empty() $().ready(() => { // $('h2').addClass('box') - ํด๋ž˜์Šค ์ถ”๊ฐ€ // $('h2').removeClass('title') - ํด๋ž˜์Šค ์ œ๊ฑฐ // console.log('๊ฒฝ๋กœ : ', $('a').attr('href')) // getter // $('a').attr('href', 'http://www.facebook.com') // // $('img').attr('src', '/image/bonobono.jpg') // $('img').attr({ // src : '/image/bonobono.jpg', // width : 100, // height : 100 // }) // ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ $('img').attr('height', function(index){ return (index + 1) * 100 }) // ๋งˆ์ง€๋ง‰ ์†์„ฑ๊ฐ’ ์„ ํƒ $('img').last().removeAttr('src') // attr(์†์„ฑ์ด๋ฆ„) : read // attr(์†์„ฑ์ด๋ฆ„, ๊ฐ’) : set // attr(์†์„ฑ์ด๋ฆ„, callback) : set // attr({}) : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์†์„ฑ์„ ํ•œ๋ฒˆ์— ์„ค์ • // css(์†์„ฑ์ด๋ฆ„) : read // css(์†์„ฑ์ด๋ฆ„, ๊ฐ’ || callback) : set // css({}) // html() : innerHtml // text() : textContent // html read - ํƒœ๊ทธ ํฌํ•จ์—์„œ ๊ฐ€์ ธ์˜ด (์ฝ˜์†” ์ฐฝ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ) console.log('html() => ', $('#menu1').html()) // text read - ํ…์ŠคํŠธ๋งŒ ๊ฐ€์ ธ์˜ด (์ฝ˜์†” ์ฐฝ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ) console.log('text() => ', $('#menu2').text()) // html, text ์ฐจ์ด ํ™•์ธ // $('#menu1').html('<h1>์•ˆ๋…•ํ•˜์„ธ์š”</h1>') // $('#menu2').text('<h1>์•ˆ๋…•ํ•˜์„ธ์š”</h1>') $('div').html(function(index, html) { console.log(index, html) $(this).html(`<h1>${html + index}</h1>`) }) // ์—˜๋ฆฌ๋จผํŠธ ์‚ญ์ œ : ๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ ์บ์ŠคํŒ… ์‚ญ์ œ ๋Œ€์ƒ ์บ์ŠคํŒ… ๋ถ€๋ชจ์—๊ฒŒ ์‚ญ์ œ์š”์ฒญ $('#menu3').remove() // ๋น„์›€, ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™์œผ๋‚˜ ์ฝ˜์†”์—์„œ ํ™•์ธ ๋จ $('#menu2').empty() // ๋™์ ์œผ๋กœ ํƒœ๊ทธ ๋งŒ๋“ค๊ธฐ }) </script> </head> <body> <div id="menu1"><span>Menu Text1</span></div> <div id="menu2"> <span>Menu Text2</span> </div> <div id="menu3"> <span>Menu Text3</span> </div> <img src="/image/bonobono.jpg"> <img src="/image/bonobono.jpg"> <img src="/image/bonobono.jpg"> <a href="https://www.naver.com">naver</a> <h2 class="title">box - 1</h2> <h2 class="title">box - 1</h2> <h2 class="title">box - 1</h2> <h2 class="title">box - 1</h2> <h2 class="title">box - 1</h2> </body> </html>
JavaScript
๋ณต์‚ฌ
โ—ฆ
๋ฌธ์„œ ๊ฐ์ฒด ์ƒ์„ฑ + ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jquery_5</title> <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> <style> .img { border: 3px solid blue; } </style> <script> $().ready(() => { // ๋ฌธ์„œ ๊ฐ์ฒด ์ƒ์„ฑ $('<h1></h1>').html('์•ˆ๋…•ํ•˜์„ธ์š”1234!!!!').appendTo('body') // ์•ˆ๋…•ํ•˜์„ธ์š”1234!!!! $('<h1>์•ˆ๋…•ํ•˜์„ธ์š”!!!!</h1>').appendTo('body') // ์•ˆ๋…•ํ•˜์„ธ์š”!!!! // ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ (ํด๋ž˜์Šค, ์†์„ฑ) // $(A).appendTo(B) : B ๋Œ€์ƒ ์•„๋ž˜๋กœ ์ถ”๊ฐ€๋จ // $(A).prependTo(B) : B ๋Œ€์ƒ ์œ„๋กœ ์ถ”๊ฐ€๋จ $('<img>').attr('src', '/image/bonobono.jpg').addClass('img').prependTo('body') // $(A).appendTo(B) : ํƒ€๊นƒ B // $(A).prependTo(B) : ํƒ€๊นƒ B // $(A).append(B) : ํƒ€๊นƒ A // $(A).prepend(B) : ํƒ€๊นƒ A // $(selector).append(content, content, content,...) // $(selector).append((index) => {}) let html1 = '<a href="#">test</a>' let html2 = '<p>TEST</p>' let html3 = '<div>DIV TEST</div>' $('body').append(html1, html2, html3, '<hr>') let productList = [] let cart = [] let links = [ { name: '๋„ค์ด๋ฒ„', url: 'https://www.naver.com' }, { name: '๊ตฌ๊ธ€', url: 'https://www.google.com' }, { name: 'ํŽ˜์ด์Šค๋ถ', url: 'https://www.facebook.com' } ] $.each(links, function (index, item) { $('#list').append(`<a></a>`) let html = ` <div> <a href="${item.name}">${item.url}</a> </div> <tr> <td>${item.name}</td> <td>${item.url}</td> </tr> ` $('#list').append(html) }) }) </script> </head> <body> <!-- <div id="list"></div> --> <table border="1"> <thead> <tr> <th>์ด๋ฆ„</th> <th>๊ฒฝ๋กœ</th> </tr> </thead> <tbody id="list"> </tbody> </table> </body> </html>
JavaScript
๋ณต์‚ฌ