Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - Odstraňovanie obsahu v jQuery (DOM)

V minulej lekcii, Nahradzovanie obsahu & klonovania v jQuery (DOM) , sme sa naučili nahrádzať a klonovať obsah stránky pomocou javascriptové knižnice jQuery. V dnešnom tutoriále si ukážeme odstraňovanie obsahu, vyskúšame si ako vždy rôzne spôsoby na príkladoch.

Opäť si vytvoríme HTML súbor a JS súbor. Do JS si vložíme základnú kostru.

$(function(){
    // Kód, který se spustí až po načtení stránky
});

Do HTML si vložíme nasledujúci kód:

<ul>
    <li>Pondělí</li>
    <li>Úterý</li>
    <li>Středa</li>
    <li>Čtvrtek</li>
    <li>Pátek</li>
    <li>Sobota</li>
    <li>Neděle</li>
</ul>

A rovno si k dokumentu pridáme tiež štýly:

ul {
    list-style-type: none;
    margin: 0px;
    padding: 0px;
}

ul li {
    font-family: 'Open Sans';
    font-size: 18px;
    margin: 10px 20px;
    padding: 5px 10px;
    background: #0080C0;
    width: 100px;
    color: #ededed;
}

Náš dokument teraz vyzerá takto:

Tvoja stránka
localhost

Naučíme sa odstraňovať obsah pomocou jQuery metód, ktorými sú remove(), empty() a detach(). Poďme si ich teda predstaviť!

Remove ()

Metóda remove() odstráni nadobro vybrané elementy z DOM. Použitie je ako vždy jednoduché, stačí napísať:

$('ul li').remove();

výsledok:

Tvoja stránka
localhost

Čím sme odstránili všetky položky zoznamu.

Ukážka # 1

Skúsme odstrániť položky až po kliknutí. To urobíme jednoducho pripojením udalosti kliknutí na položku zoznamu metódou on('click'). Udalosti ako ďalší argument odovzdáme anonymný funkciu s obsluhou udalosti. Vnútri potom odstránime položku, na ktorú sme klikli. Tú získame pomocou $(this).

$("ul li").on('click', function() {
    $(this).remove();
});

Živé demo:

Tvoja stránka
localhost

Bezchybné, všetko nám funguje. Mimochodom, pomocou funkcie $() si okrem premennej this môžeme obaliť ktorýkoľvek element v čistom JavaScriptu, na ktorom následne pôjdu volať jQuery metódy.

Môžeme sa pustiť do ďalšej ukážky.

Ukážka # 2

Čo keď napríklad budeme chcieť odstrániť všetky elementy, ktoré obsahujú nejaké slovo, alebo jeho časť, napríklad "ek" ? Na to nám poslúži "doplňujúce selektor" filter(), ktorý filtruje náš aktuálny selektor. V filter() použijeme ":contains('ek')", čo nám vyberie všetky elementy, ktoré obsahujú text 'ek'. Pozor, filter je case sensitive, záleží teda na veľkosti písmen.

$('ul li').filter(":contains('ek')").remove();

výsledok:

Tvoja stránka
localhost

Pôsobivé, že? Zápis je však stále trochu zdĺhavý. Metóda remove() nám ponúka uviesť ako argument selektor, môžeme náš kód upraviť na:

$('ul li').remove(":contains('ek')");

Čím dosiahneme rovnaký efekt. Skúsme si ešte odstrániť "Sobota" a **"Nedeľa ** . Ako selektor nám teraz bude slúžiť `),: contains ( 'Nedeľa')" `.

$('ul li').remove(":contains('Sobota'), :contains('Neděle')");

Teraz teda vieme, kedy máme chodiť do školy či do práce :) :

Tvoja stránka
localhost

Pretože sme si už remove() dôkladne precvičili, prejdeme ďalej.

Empty ()

Metóda empty(), v preklade vyprázdniť, vyprázdni daný element od všetkého obsahu. Metóda neprijíma žiadny argument.

Ukážka # 3

Poďme si ukázať, ako sa dá vyprázdniť položka "Utorok". Pridajme si na položku utorok id="den2".

<ul>
    <li>Pondělí</li>
    <li id="den2">Úterý</li>
    <li>Středa</li>
    <li>Čtvrtek</li>
    <li>Pátek</li>
    <li>Sobota</li>
    <li>Neděle</li>
</ul>

A JS kód:

$('#den2').empty();

výsledok:

Tvoja stránka
localhost

Jednoduché.

Ukážka # 4

Ak by sme chceli opäť vyprázdniť element, ktorý obsahuje nejakú časť textu, stačí použiť filter().

$('ul li').filter(':contains("e")').empty();

výsledok:

Tvoja stránka
localhost

Teraz nám variant, kde sme ako argument metódy pridali selektor, nebude fungovať. Môžete si to vyskúšať.

$('ul li').empty(':contains("e")');

Uvidíte, že metóda empty() argument ignoruje a vykoná všetko ako by tam nebol.

Detach ()

Detach znamená v preklade odpojiť. Metóda nám vyjme element (podobne ako keď použijeme Ctrl + X), ktorý následne môžeme uložiť do nejakej premennej.

Ukážka # 5

Vytvoríme si pod zoznamom odsek, ktorý bude obsahovať text "Nič tu nie je".

Do nášho HTML pridáme:

<p>Nic tu není</p>

Teraz skúsme vybrať položku "Utorok" (má id #den2). Po vybratí vložíme element #den2 do odseku, ktorého obsah tým prepíšeme.

$('p').text($('#den2').detach().text());

výsledok:

Tvoja stránka
localhost

Na tento konkrétny príklad by sa viac hodila napr. Metóda append(). Poďme si teda ukázať, ako detach() využiť lepšie!

Ukážka # 6

Metóda detach() je vhodná len čo chceme vybrať nejaké elementy a neskôr ich niekam vložiť. Poďme si teda urobiť takú malú hračku. Po kliknutí na položku nášho liste túto položku detachujeme a uložíme ju do premennej typu poľa. Pri kliknutí na odsek doň vložíme všetky položky z tohto poľa.

Pole si vytvorme ešte pred registrovaním on('click'), premennú pomenujte napr. sklad.

let sklad = [];

Po kliknutí na odsek ho vyčistíme pomocou empty(). Potom zavoláme metódu $.each(), ktoré odovzdáme ako parameter sklad, ako premennú, s ktorou bude pracovať. Ďalej vytvoríme anonymný funkciu, ktorá bude prijímať parametre i a v. Parameter i je ako index a v ako value.

let sklad = [];

$('ul li').on('click', function() {
    sklad.push($(this).detach());
});

$('p').on('click', function() {
    let toto = $(this);
    $(toto).empty();
    $.each(sklad, function(i, v) {
        $(toto).append(v);
    });
})

Živé demo:

Tvoja stránka
localhost

Toto je už väčšia zábava :) Všetko by nám malo fungovať, vyskúšajte si to. V budúcej lekcii, Triedy v jQuery (DOM) , si ukážeme ako v jQuery manipulovať so triedami elementov.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 385x (1.23 kB)
Aplikácia je vrátane zdrojových kódov v jazyku JavaScript

 

Predchádzajúci článok
Nahradzovanie obsahu &amp; klonovania v jQuery (DOM)
Všetky články v sekcii
Základy jQuery
Preskočiť článok
(neodporúčame)
Triedy v jQuery (DOM)
Článok pre vás napísal Honza Bittner
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Aktivity