π Π£ΡΠΎΠΊ 5: ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ DOM β ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠ΅, Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΈ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² jQuery
- πΉ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ DOM
- πΈ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ
- πΈ Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ
- πΈ Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ
- πΈ Π‘ΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
- πΈ ΠΡΠΈΠΌΠ΅ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
- π¦ ΠΡΠΈΠΌΠ΅Ρ 1: ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ
- π¦ ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ°ΠΉΡΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ
- πΈ Π¦Π΅ΠΏΠΎΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (chaining)
- πΈ Π§Π°ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
- β ΠΡΠΈΠ±ΠΊΠ°: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ children() Π²ΠΌΠ΅ΡΡΠΎ find()
- β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ parents() Π±Π΅Π· ΡΠΈΠ»ΡΡΡΠ°
- π Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
- π ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π¦Π΅Π»Ρ: ΠΈΠ·ΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ jQuery Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ DOM — Π²Π²Π΅ΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ, Π²Π½ΠΈΠ· ΠΊ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌ ΠΈ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΊ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ, ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ, Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ Ρ. Π΄.
πΉ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ DOM?
DOM (Document Object Model) — ΡΡΠΎ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ HTML-ΡΠ»Π΅ΠΌΠ΅Π½Ρ — ΡΡΠΎ ΡΠ·Π΅Π» Π΄Π΅ΡΠ΅Π²Π°.
jQuery Π΄Π°ΡΡ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ Π΄Π΅ΡΠ΅Π²Ρ: ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π½ΡΠΆΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ, Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ — Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
-
ΠΠ°ΠΉΡΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ,
-
ΠΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅Ρ Π΄Π΅ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°,
-
ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ Ρ. Π΄.
πΈ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ
ΠΠ΅ΡΠΎΠ΄ | Π§ΡΠΎΠ΄Π΅Π»Π°Π΅Ρ |
---|---|
.parent() |
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ |
.parents() |
ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π²Π²Π΅ΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ |
.children() |
ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅Ρ ΠΏΡΡΠΌΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² |
.find() |
ΠΠ°ΠΉΡΠΈ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ |
.siblings() |
ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅Π΄Π΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° |
.next() |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΎΡΠ΅Π΄ |
.prev() |
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΎΡΠ΅Π΄ |
.closest() |
ΠΠ°ΠΉΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ |
πΈ Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ
parent()
ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
$('#text').parent().css('border', '1px solid red');
π ΠΡΠΈΠΌΠ΅Ρ:
<div class="box">
<p id="text">ΠΠ±Π·Π°Ρ</p>
</div>
Π’ΠΎΠ³Π΄Π° $('#text').parent()
Π²ΡΠ±Π΅ΡΠ΅Ρ .box
.
parents()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅Ρ
ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π΄ΠΎ <html>
:
$('#text').parents().addClass('ancestor');
ΠΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ:
$('#text').parents('.container');
closest()
ΠΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ:
$('#text').closest('.card').css('background', '#eee');
ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°.
πΈ Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ
children()
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΡΠΌΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ²:
$('.list').children().css('color', 'blue');
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠ»ΡΡΡ:
$('.list').children('li.active');
find()
ΠΠ°Ρ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎ):
$('.form').find('input[type="text"]').val('ΠΡΠΈΠΌΠ΅Ρ');
π Π Π°Π·Π½ΠΈΡΠ°:
-
children()
— ΡΠΎΠ»ΡΠΊΠΎ 1 ΡΡΠΎΠ²Π΅Π½Ρ Π²Π½ΠΈΠ·. -
find()
— Π²ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π²Π½ΠΈΠ·.
πΈ Π‘ΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
siblings()
ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅Ρ Π±ΡΠ°ΡΡΠ΅Π²/ΡΠ΅ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
$('.selected').siblings().removeClass('highlight');
next()
ΠΈ prev()
next()
— ΡΠΎΡΠ΅Π΄ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ, prev()
— ΡΠΎΡΠ΅Π΄ ΠΏΠΎΠ·Π°Π΄ΠΈ:
$('#current').next().css('font-weight', 'bold');
$('#current').prev().css('opacity', 0.5);
πΈ ΠΡΠΈΠΌΠ΅ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
π¦ ΠΡΠΈΠΌΠ΅Ρ 1: ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ
<table>
<tr><td>ΠΠ΅ΡΠ²Π°Ρ</td></tr>
<tr class="target"><td>ΠΡΠΎΡΠ°Ρ</td></tr>
<tr><td>Π’ΡΠ΅ΡΡΡ</td></tr>
</table>
<script>
$('.target').hover(
function() {
$(this).siblings().css('opacity', 0.5);
},
function() {
$(this).siblings().css('opacity', 1);
}
);
</script>
π¦ ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ°ΠΉΡΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ
<div class="card">
<div class="content">
<button class="like">Like</button>
</div>
</div>
<script>
$('.like').click(function() {
$(this).closest('.card').toggleClass('liked');
});
</script>
πΈ Π¦Π΅ΠΏΠΎΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (chaining)
Π jQuery ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ΄ΡΡΠ΄:
$('#block')
.parent()
.css('border', '1px solid blue')
.children('p')
.text('ΠΠΎΠ²ΡΠΉ ΡΠ΅ΠΊΡΡ');
ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΠΈΡΠ°Π΅ΠΌΠΎ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°.
πΈ Π§Π°ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
β ΠΡΠΈΠ±ΠΊΠ°: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ children()
Π²ΠΌΠ΅ΡΡΠΎ find()
$('.container').children('.target'); // ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠΌΡΠ΅ Π΄Π΅ΡΠΈ
$('.container').find('.target'); // Π»ΡΠ±ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅
β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ parents()
Π±Π΅Π· ΡΠΈΠ»ΡΡΡΠ°
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ closest()
ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ:
$(this).parents('.wrapper:first'); // ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ
π Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
-
ΠΠ°ΠΉΠ΄ΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
.delete
Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ.item
ΠΈ ΡΠ΄Π°Π»ΠΈ Π΅Π³ΠΎ. -
ΠΠ»Ρ Π²ΡΠ΅Ρ
.card
, Π΄ΠΎΠ±Π°Π²Ρ ΠΊΠ»Π°ΡΡ.selected
ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. -
ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π°
.next-btn
Π²ΡΠ±Π΅ΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ.slide
ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠΈ Π΅Π³ΠΎ. -
ΠΡΠΎΠ±ΡΠ°Π·ΠΈ Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
#comment
Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
π ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ DOM — ΠΎΡΠ½ΠΎΠ²Π° Π³ΠΈΠ±ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ HTML-ΡΡΡΡΠΊΡΡΡΠΎΠΉ. Π‘ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡ ΠΌΠΎΠΆΠ΅ΡΡ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ, Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΡΡΠΎΡΠΊΠ°ΠΌΠΈ, ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ.