[jQuery] on() off() one()

2020. 2. 13. 17:56ยท๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/jQuery

[jQuery] ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ ๋ฐ ์ฒ˜๋ฆฌ on(), off(), one()

์ถœ์ฒ˜

1. ์ด๋ฒคํŠธ์˜ ์—ฐ๊ฒฐ(event binding)

ํŠน์ • ์š”์†Œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(event handler)ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ž‘์„ฑ๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํŠน์ • ์š”์†Œ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ๋ฐ”์ธ๋”ฉ(event binding)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

jQuery๋Š” ์ด๋ฒคํŠธ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

[์˜ˆ์ œ] :: id๊ฐ€ "btn"์ธ ์š”์†Œ์— ํด๋ฆญ(click) ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

$('#btn').click(function(event) { /* ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” jQuery ์ฝ”๋“œ */ });
$('#btn').bind('click', function(event) { /* ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” jQuery ์ฝ”๋“œ */ });
$('#btn').on('click', function(event) { /* ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” jQuery ์ฝ”๋“œ */ });
$('body').on({ 'click' : function(event) { /* ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” jQuery ์ฝ”๋“œ */ }}, '#btn');
$('body').on('click', '#btn', function(event) { /* ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” jQuery ์ฝ”๋“œ */ });

jQuery 1.7๋ถ€ํ„ฐ๋Š” .bind() ๋‚˜ .click() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„, ๋‚ด๋ถ€์ ์œผ๋กœ .on()๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.

 

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์˜ ๋ฐœ์ „

jQuery์˜ ๋ฐœ์ „์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ญ์‹œ ๋ณ€ํ•ด์™”๋‹ค.

jQuery 1.0์—์„œ๋Š” .bind() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ–ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์—๋Š” .live()๋ฉ”์†Œ๋“œ์™€ .delegate() ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฑฐ์ณ ํ˜„์žฌ๋Š” .on()๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.

 

2. .on() ๋ฉ”์†Œ๋“œ

jQuery๋Š” ํŠน์ • ์š”์†Œ์— ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ(event binding)ํ•˜๊ธฐ ์œ„ํ•ด .on()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. jQuery 1.7๋ถ€ํ„ฐ ์†Œ๊ฐœ๋œ .on()๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.

  • ์„ ํƒํ•œ ์š”์†Œ์— ์–ด๋–ค ํƒ€์ž…์˜ ์ด๋ฒคํŠธ๋ผ๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋™์‹œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ ํƒํ•œ ์š”์†Œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ™์ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ง€์ • ์ด๋ฒคํŠธ(custom event)๋ฅผ ์œ„ํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฐจํ›„์— ๋‹ค๋ฃจ๊ฒŒ ๋  ์š”์†Œ๋ฅผ ์ด๋ฒคํŠธ์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

[์˜ˆ์ œ] :: ์š”์†Œ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์•Œ๋ฆผ์ฐฝ์ด ์ผœ์ง€๋Š” ์˜ˆ์ œ์ด๋‹ค.

$('p').on('click', function() {
  alert('๋ฌธ์žฅ์ด ํด๋ฆญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.');
});

 

[์˜ˆ์ œ] :: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•˜๋‚˜์— ์ด๋ฒคํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

$('p').on('mouseenter mouseleave', function() {
  $('div').append('๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์œ„๋กœ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋น ์ ธ ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.<br />');
});

 

[์˜ˆ์ œ] :: ํ•˜๋‚˜์˜ ์š”์†Œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ™์ด ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

$('p').on({
  click : function() {
    $('div').append('๋งˆ์šฐ์Šค๊ฐ€ ๋ฌธ์žฅ์„ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค.<br />');
  },
  mouseenter : function() {
    $('div').append('๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋ฌธ์žฅ ์œ„๋กœ ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.<br />');
  },
  mouseleave : function() {
    $('div').append('๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์„ ๋น ์ ธ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.<br />');
  }
});

 

 

3. off() ๋ฉ”์†Œ๋“œ

.off() ๋ฉ”์†Œ๋“œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋ฒคํŠธ์™€์˜ ๋ฐ”์ธ๋”ฉ(binding)์„ ์ œ๊ฑฐํ•œ๋‹ค.

$('#btn').on('click', function() {
  alert('๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค.');
});
$('#btnBind').on('click', function() {
  $('#btn').on('click').text('๋ฒ„ํŠผ ํด๋ฆญ ๊ฐ€๋Šฅ');
});
$('#btnUnbind').on('click', function() {
  $('#btn').off('click').text('๋ฒ„ํŠผ ํด๋ฆญ ๋ถˆ๊ฐ€๋Šฅ');
});

 

 

4. one() ๋ฉ”์†Œ๋“œ

.one()๋ฉ”์†Œ๋“œ๋Š” ๋ฐ”์ธ๋”ฉ(binding)๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ๋Š” ๋”๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

$('button').one('click', function() {
  $('div').append('์ด์ œ ํด๋ฆญ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.<br />');
});

.one() ๋ฉ”์†Œ๋“œ๋Š” .on() ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋“ฑ .on() ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/jQuery' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [jQuery] :visible ์กฐ๊ฑด
  • [jQuery] ํ•„ํ„ฐ๋ง๋ฉ”์†Œ๋“œ first() last() eq() filter() not() has() is() map() slice()
  • [jQuery] queue() & dequeue()
  • [jQuery] ready() load() ์ฐจ์ด
jmjm
jmjm
  • jmjm
    /* jmjmjm */
    jmjm
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (125)
      • ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY (87)
        • HTML (9)
        • CSS (25)
        • SASS (4)
        • JavaScript (16)
        • jQuery (9)
        • Publishing (8)
        • Git (11)
        • React (3)
        • Vue (0)
        • ์›น์ ‘๊ทผ์„ฑ (1)
        • Gulp (1)
      • ๐ŸฃcodeLab (27)
      • ๐ŸŒˆetc (8)
      • ๐Ÿฅฐ ์ผ์ƒ (2)
      • ๐ŸŒŸ์ฝ์–ด๋ณด๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    HTML Form
    vscode ๋‹จ์ถ•ํ‚ค
    ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋˜๋Š” ์ด์œ 
    ์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด
    sass compiler
    ํ˜•์ œ์ธ์ ‘์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ slidedown
    css flex
    ์ ‘๊ทผ์„ฑ ์ฃผ์˜์‚ฌํ•ญ
    css ๊ฐ€์ƒ์„ ํƒ์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปฌ๋ ‰์…˜
    javascript slidedown
    sass
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹๋ฌธ
    ์›น์ ‘๊ทผ์„ฑ
    html collection
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ๋ฌธ
    javascript htmlcollection
    javascript slideup
    react import export
    css ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋ผ์š”
    sticky codepen
    javascript ์ปฌ๋ ‰์…˜
    javascript nodelist
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ slideup
    sticky jsfiddle
    javascript htmlcollection nodelist
    CSS ์„ ํƒ์ž
    sticky ํ™œ์šฉ
    ํ˜•์ œ์ธ์ ‘์ž display none
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
jmjm
[jQuery] on() off() one()
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”