jQuery

Dearยท2025๋…„ 4์›” 14์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
5/74

๐Ÿ’™JQuery

Node(Element)๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ปจํŠธ๋กคํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.
์ฝ”๋“œ ๋ณด๊ธฐ, ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ ์ฐพ๊ธฐ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ, ์ด๋ฒคํŠธ ์ œ์–ด, Ajax ๊ฐœ๋ฐœ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””์ž์ธ๋˜์—ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ jQuery๊ฐ€ ๋” ์ˆ˜์›”ํ•˜๋‹ค.

๐Ÿ’™์…€๋ ‰ํŒ…

jQuery ์…€๋ ‰ํ„ฐ๋Š” CSS์™€ ๋™์ผํ•˜๋‹ค

์˜ˆ์ œ

<h1>Where do you want to go?</h1>
<h2>Travle Destinations</h2>
<p>Plan your next adventure</p>
<ul id='destinations'>
    <li>Rome</li>
	<li>Paris</li>
	<li class='promo'>Rio</li>
</ul>


// id๊ฐ€ destinations ์ธ ์š”์†Œ
$("#destinations"); 

// class๊ฐ€ promo ์ธ ์š”์†Œ
$(".promo"); 

// id๊ฐ€ destinations ํ•˜์œ„์˜ li ์š”์†Œ, ์ŠคํŽ˜์ด์Šค๋กœ ํ•˜์œ„(๋ถ€๋ชจ์™€ ์ž์‹) ์š”์†Œ ๊ตฌ๋ถ„
$("#destinations li"); 

// ul ํ•˜์œ„์˜ li ์š”์†Œ๋ฅผ ์ฐพ์•„๋ณธ๋‹ค.
// ์ž์‹ ์š”์†Œ ์กด์žฌํ•˜๋Š”๊ฑฐ ์žˆ์œผ๋ฉด ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค.
$("#destinations li");

// ul ๋ฐ”๋กœ ํ•˜์œ„์˜ li ์š”์†Œ๋ฅผ ์ฐพ์•„์˜จ๋‹ค.
// > ์ง์† ์ž์‹ ์š”์†Œ๋งŒ ๊ฒ€์ƒ‰
$("#destinations > li");

// ๋‹ค์ค‘ ์š”์†Œ ์…€๋ ‰ํŒ…
// , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋™์‹œ์— ๊ฒ€์ƒ‰
$(".promo, #france");

// : Filter ์—ญํ™œ

// ์ฒซ ๋ฒˆ์งธ ์š”์†Œ
$("#destinations li:first");

// ๋งˆ์ง€๋ง‰ ์š”์†Œ
$("#destinations li:last");

// ํ™€์ˆ˜ ๋ฒˆ์งธ
$("#destinations li:odd");

// ์ง์ˆ˜ ๋ฒˆ์งธ
$("#destinations li:even");

๐Ÿ’™Dom Traversing

ํ•˜์œ„์š”์†Œ ํƒ์ƒ‰๋ณด๋‹ค ์›”๋“ฑํžˆ ๋น ๋ฅด๊ฒŒ ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

<h1>Where do you want to go?</h1>
<h2>Travle Destinations</h2>
<p>Plan your next adventure</p>
<ul id='destinations'>
    <li>Rome</li>
	<li>Paris</li>
	<li class='promo'>Rio</li>
</ul>

// destinations : selection
// find : traversal
$("#destinations").find("li");

// ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ์„ ํƒ
$("li").first(); // rome

// ๋งˆ์ง€๋ง‰ ์š”์†Œ ์„ ํƒ
$("li").last();

// ๋‹ค์Œ ์š”์†Œ
$("li").first().next(); // Paris

// ์ด์ „ ์š”์†Œ
$("li").first().next().prev(); // rome

// ํ•˜์œ„์—์„œ ์ƒ์œ„๋กœ ํƒ์ƒ‰
// ๋ถ€๋ชจ ์š”์†Œ ์„ ํƒ, ์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(์ฒด์ด๋‹)
$("li").first().parent(); 

// ์ž์‹ ์š”์†Œ ์„ ํƒ
$("#destinations").children("li");

๐Ÿ’™DOM ๋‹ค๋ฃจ๊ธฐ


// jQuery ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•„์ˆ˜
// $(document).ready(){}

$(document).ready(function() {
  
	var price = "$("<p>From $399.99</p>");
  
  	// before() : ์„ ํƒํ•œ ์š”์†Œ์˜ ์ด์ „ ์œ„์น˜์— ์ƒˆ ์š”์†Œ ์ถ”๊ฐ€
  	// .vacaton ์š”์†Œ์˜ ์ด์ „์— price ์š”์†Œ ์ถ”๊ฐ€
  	$(".vacaton").before(price);
  
  	// after() : ์„ ํƒํ•œ ์š”์†Œ์˜ ๋‹ค์Œ ์œ„์น˜์— ์ƒˆ ์š”์†Œ ์ถ”๊ฐ€
  	// .vacaton ์š”์†Œ์˜ ์ดํ›„์— price ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  	$(".vacaton").after(price);
  
  	// prepend() : ์„ ํƒํ•œ ์š”์†Œ์˜ ๋งจ ์•ž ์œ„์น˜์— ์ƒˆ ์š”์†Œ ์ถ”๊ฐ€
  	// .vacation ์š”์†Œ์˜ ์•ˆ์ชฝ ๊ฐ€์žฅ ์ฒซ ๋ถ€๋ถ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  	$(".vacaton").prepend(price);
  
  	// apend() : ์„ ํƒํ•œ ์š”์†Œ์˜ ๋งˆ์ง€๋ง‰ ์œ„์น˜์— ์ƒˆ ์š”์†Œ ์ถ”๊ฐ€
  	// .vacaton ์š”์†Œ์˜ ์•ˆ์ชฝ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  	$(".vacaton").apend(price);
  
  	// remove() : ์„ ํƒํ•œ ์š”์†Œ ์‚ญ์ œ
  	$(".button").remove();
  	
});

๐Ÿ’™DOM ์ด๋ฒคํŠธ

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํด๋ฆญํ•œ ๋ฒ„ํŠผ๋งŒ ์‚ญ์ œํ•˜๊ณ  ๊ทธ ์ž๋ฆฌ์— p ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉฐ ๊ธˆ์•ก์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ


$(document).ready(function() {
  
	$("button").on("click", function() {
      var price = "$("<p>From $399.99</p>");
      
      // ํด๋ฆญํ•˜์ง€ ์•Š์€ ๋ฒ„ํŠผ ์˜์—ญ์—๋„ p ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚จ์•„ ์žˆ๋‹ค.
      $(".vacation").append(price);
      // ๋ฒ„ํŠผ์ด div ์•„๋ž˜๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด p ์—˜๋ฆฌ๋จผํŠธ๋Š” div ์•ˆ์ชฝ์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
      $(this).after(price); 
      $(this).parent().parent().append(price);    
      $(this).parent(".vacation").append(price);
      
      // p ์—˜๋ฆฌ๋จผํŠธ๋ฅผ li ์•ˆ์— ์ถ”๊ฐ€
      $(this).closet(".vacation").append(price);
             
      $("button").remove(); // ๋ชจ๋“  ๋ฒ„ํŠผ์ด ์‚ญ์ œ๋จ
      
      // ํด๋ฆญํ•œ ๋ฒ„ํŠผ ์š”์†Œ๋งŒ ๊ฐ€์ ธ์™€์„œ ์‚ญ์ œ
      $(this).remove();
    
    });
});

3๊ฐœ์˜ ๋ฒ„ํŠผ์ด ์žˆ์„ ๊ฒฝ์šฐ ํด๋ฆญ ์ด๋ฒคํŠธ ์˜ˆ์ œ


// ๊ธฐ๋ณธ ์†์„ฑ ์ด์™ธ์— ๋‹ค๋ฅธ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„๋•Œ 
// data-key="valeu" ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ
<li class="vacation onsale" data-price="399.99">
  	<h3>Hawaiian Vacation</h3>
	<button>Get Price</button>
	<ul class="comments">
    	<li>Amazing deal!</li>
		<li>Want to go!</li>
	</ul>
</li>

$(document).ready(function() {
  
	$("button").on("click", function() {
      	var amount = $(this).closest('.vacation').data('price');
    	var price = "$("<p>From $" + amount + "</p>");
      	
       	$(this).closet(".vacation").append(price);
      	$(this).remove();
      
      // $(this).closet(".vacation")๊ฐ€ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋‹ค
      // ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ
      
      var vacation = $(this).closet(".vacation");
      
      	var amount = vacation.data('price');
    	var price = "$("<p>From $" + amount + "</p>");
      	
       	vacation.append(price);
      	$(this).remove();
      
    });
});
      

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ ์˜ˆ์ œ

click(), dblclick(), mouseout(), mouseover() ... ๋“ฑ๋“ฑ

$(document).ready(function() {
  
  	// ํด๋ฆญํ–ˆ์„๋•Œ
  	$('.confirmation').on('click', 'button', function(){
      	$(this).closest('.confirmation').find('.ticket').slideDown();
    });
  
  	// ๋งˆ์šฐ์Šค ์˜ฌ๋ฆด๋•Œ
  	$('.confirmation').ons('mouseenter','h3', function(){
      	$(this).closest('.confirmation').find('.ticket').slideDown();
    });
});

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ ์˜ˆ์ œ

keypress() : ํ‚ค๋ณด๋“œ ๋ˆ„๋ฅผ๋•Œ(๋ฌธ์ž ํ‚ค ์ œ์™ธํ•œ ํ‚ค ์ฝ”๋“œ)
keydown() : ํ‚ค๋ณด๋“œ ๋ˆ„๋ฅผ๋•Œ(๋ชจํŠผ ํ‚ค ์ฝ”๋“œ)
keyup() : ํ‚ค๋ณด๋“œ์—์„œ ์†์„ ๋–ผ์—ˆ์„ ๋•Œ


<div class="vacation" data-price="399.99">
  	<h3>Hawaiian Vacation</h3>
	<p>$399.99 per ticket<p>
    <p>
    	Tickets:
        // class ๊ฐ€ quantity ์ธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด
        <input type='number' class='quantity' value='1'/>
    </p>
</div>
// 399.99 ๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ
<p>Total Price : $<span id='total'>399.99</span></p>
  

$(document).ready(function(){
  $('.vacation').on('keyup','.quantity', function(){
    	var price = +$(this).closet('.vacation').data('price');
    	var quantity = +$(this).val();
    	$('#total').text(price * quantity);
  });
});

๐Ÿ’™input / textarea

val()

์„ ํƒํ•œ ์š”์†Œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ ์šฉํ•œ๋‹ค.

<label for="email">์ด๋ฉ”์ผ</label>
<hr/>
<input type="text" id="email" placeholder="Email์„ ์ž…๋ ฅํ•˜์„ธ์š”."/><br/>
<br/>
  
// Email input์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด
var email = $("#email").val();
// Email input์— ๊ฐ’์„ ์„ธํŒ…ํ•œ๋‹ค.
// ์ž…๋ ฅ ๊ฐ’ ์ดˆ๊ธฐํ™”์— ์œ ์šฉ
$("#email").val("Email ์ž…๋‹ˆ๋‹ค.");

$("#email").val("Email ์ž…๋‹ˆ๋‹ค.");๋Š” <input type="text" id="email" placeholder="Email์„ ์ž…๋ ฅํ•˜์„ธ์š”."/>ํ›„์— ์ž‘์„ฑํ•ด์•ผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ ์šฉ๋œ๋‹ค.

๐Ÿ’™select

selct์˜ ์„ ํƒ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ญ๋ชฉ ๋ณ€๊ฒฝ ์‹œ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

// select์˜ ์„ ํƒ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
var weeks= $("#weeks").val();

// select์˜ ๊ฐ’์„ ๊ฐ•์ œ๋กœ ์„ ํƒํ•œ๋‹ค.
$("#jobs").val("2")

// select์˜ ์„ ํƒ ํ•ญ๋ชฉ์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ์˜ต์…˜์˜ text ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๊ฒฝ๊ณ ์ฐฝ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.
$("#jobs").on("change", function(){
  aler($("#jobs option:selected").text());
});

๐Ÿ’™radio / checkbox

prop()

์„ ํƒํ•œ ์š”์†Œ์˜ ์ƒํƒœ ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.

// radio / checkbox ๊ฐ€ ์„ ํƒ๋œ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. 
// ์„ ํƒํ–ˆ๋Š”์ง€ ์•ˆํ–ˆ๋Š”์ง€ ํŒ๋‹จ
console.log($("input[type=radio][name=age]:checked").length);
console.log($("input[type=checkbox][name=hobby]:checked").length);

// radio / checkbox๋ฅผ ๊ฐ•์ œ๋กœ ์„ ํƒํ•˜๊ฒŒ ํ•œ๋‹ค. 
// "๋ชจ๋‘์„ ํƒ"์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.
// eq(1) ์ด๋ผ๋Š”๊ฑด ๋‘๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ณ ๋ฅธ๊ฒƒ (0๋ถ€ํ„ฐ ์‹œ์ž‘)
$("input[type=radio][name=age]").eq(1).prop("checked", true);
$("input[type=checkbox][name=hobby]").eq(1).prop("checked", true);

// ์ฒดํฌ๋ฐ•์Šค ์„ ํƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ
// ์ฒดํฌ๋ฐ•์Šค ํด๋ž™ํ–ˆ์„ ๋•Œ, ์ฒดํฌ๊ฐ€ ๋œ ๊ฒฝ์šฐ ๋ชจ๋“  ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฒดํฌํ•œ๋‹ค. 
// ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์ฒดํฌ๋ฐ•์Šค์˜ ์ฒดํฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค.
$("input[type=checkbox][name=hobby]").on("click", function(){
  	var checked = $(this).prop("checked");
  	console.log(checked);
  	if(checked){
      $("input[type[checkbox][name=hobby]").prop("checked", false);
    }
  	else{
      $("input[type=checkbox][name=hobby]").prop("checked", false);
    }
});

๐Ÿ’™submit

attr()

์š”์†Œ์˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค

<input type="button" id="done" value="์™„๋ฃŒ" />

$("#done").on("click", function(){
  // Validation Check
  var form = $("#signUpForm");
  // attr ์„ ์ด์šฉํ•ด์„œ ์†์„ฑ์„ ์ •์˜ํ•œ๋‹ค.
  $(form).attr("action", "/doSignUp");
  
  // attr ์€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ •์˜ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.
  $(form).attr({
    "method":"post"
    "enctype" : "multipart/formdata"
    });

  $(form).submit();
});  

// attr์— ์†์„ฑ์˜ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๋ฉด ๊ฐ’์„ ์ฝ์–ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
var action = $(form).attr("action");
console.log(action);

console ์ฐฝ์— ๋œฌ ๊ฐ’

๐Ÿ’™Ajax

JavaScript์™€ XML์„ ์ด์šฉํ•œ ๋น„๋™๊ธฐ์  ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ธฐ๋ฒ•์ด๋‹ค.

๋™๊ธฐ์ 

์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

๋น„๋™๊ธฐ์ 

์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋ฉด์„œ ์›นํŽ˜์ด์ง€๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’™json

๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑํ•ด ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ˜•์‹์ด๋‹ค.

$.ajax({
  	type:"POST",
  	url:"semester_code.php"
  	data:{
  		semesterDivision : semesterDivision,
  		campus_id : campus_id,
  		semester

๐Ÿ’™Ajax์™€ json์˜ ๊ด€๊ณ„

Ajax๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์ด Ajax๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ , ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.
์ด๋•Œ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ JSON ์ด๋‹ค.

๐ŸคํšŒ๊ณ 

์…€๋ ‰ํ„ฐ์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ณ  ์ด์ „์— ๋ฐฐ์šด CSS์™€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„๋„ ์žˆ์ง€๋งŒ, ๊ตณ์ด ์™ธ์šฐ๋ ค ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์˜ˆ์ œ๋‚˜ ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ์‹ค์ œ๋กœ ์ฝ”๋”ฉ์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ต์ˆ™ํ•ด์งˆ ๊ฒƒ ๊ฐ™๋‹ค.

profile
์นœ์• ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€