Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 3. diel - Nahradzovanie obsahu & klonovania v jQuery (DOM)

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Jirka
Člen
Avatar
Odpovedá na Honza Bittner
Jirka:4.5.2014 17:58

Ano, to máte pravdu, ale v tom dílu konkrétně 5. bylo:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>

A s tímto jquery ty vaše javascripty nefungovaly. Já jen, aby případným nováčkům jako já to pak nezamotalo hlavu, mořil jsem se s tím a hledal jsem kde je chyba :) Samozřejmě možná je to jinak a jen jsem hloupý já, kdo ví :)

Avatar
jos.pekar
Člen
Avatar
jos.pekar:13.9.2014 19:27

Ahoj. Ten script s kliknutím mi též nefungoval. Poupravil jsem kód do následující podoby a vše funguje:
$('div').clic­k(function(){
var obsah = $(this).html();
$(this).repla­ceWith('<p>' + obsah + '</p>');
});

Avatar
Bebbana
Člen
Avatar
Bebbana:27.4.2016 13:15

Já to upravila takhle:

$(function(){
    $('p').each(function(){
       var obsah = $(this).html();
       $(this).replaceWith('<div>' + obsah + '</div>');
       $('div').click(function(){
           $(this).replaceWith('<p>' + obsah + '</p>');
       });
});
Editované
Avatar
Bebbana
Člen
Avatar
Odpovedá na Bebbana
Bebbana:27.4.2016 13:28

Oprava, takhle:

$(function(){
    $('p').each(function(){
       var obsah = $(this).html();
       $(this).replaceWith('<div>' + obsah + '</div>');
       $('div').click(function(){
           $(this).replaceWith('<p>' + obsah + '</p>');
       });
    });
});
Avatar
David Hanč
Člen
Avatar
David Hanč:4.11.2016 20:30

Dobří lidé, poraďtě co s tím je špatně? Asi to bude uplně něco triviálního, ale uniká mi to.

<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="UTF-8" />

<meta name="description" content="DOM manipulace v jQuery" />
<title></title>

<script src="http://a­jax.googleapis­.com/ajax/lib­s/jquery/1.10­.2/jquery.min­.js"></script>

<script src="js1.js"></scrip­t>

<link rel="stylesheet" href="css.css" type="text/css"/>
</head>
<body>
<p> Chci </p>
<p> Pozdravit </p>
<p> Penny </p>

<p class="last">! </p>

</body>
</html>

javascript:

$('div').on('clic­k', function(){
var obsah = $(this).html();
$(this).repla­ceWith('<p>' + obsah + '</p>');
});

Avatar
Odpovedá na David Hanč
Štefan Pružinský:4.11.2016 21:15

Pokúšaš sa pracovať s neexistujúcim div-om. Najprv je potrebné výtvoriť div, a až následne je s ním možné pracovať. :)
Taktiež Ti odporúčam načítavať JavaScript až na konci súboru. Dôvodom je správna funkcionalita DOM. Veľa zdaru! :)

Odpovedať
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
arnost99
Člen
Avatar
arnost99:30.10.2017 4:54

Možná bych ještě zmínil (když už bylo zmíněno :first a :last) využitelnost ":even" a ":odd", které vyberou pouze sudé a liché selektory...

Editované
Avatar
Karel Labonek:19.4.2018 7:56

Ahojki, rád bych v ukázce č.3 docílil toho že po kliknutí se "p" přepíše na "div" a po dalším kliknutí zase "div" na "p" a takto pořád dokola, něco mi zřejmě uniká :-( . Má někdo nějaký nápad :-) . Děkuji

Avatar
Honza Bittner
Tvůrce
Avatar
Odpovedá na Karel Labonek
Honza Bittner:19.4.2018 18:25

No, tady to budeš muset udělat jinak, jelikož všechny tyto eventy, které se píšou v kódu, se zaregistrují jen pro ty elementy, které již jsou v DOMu. Pokud do DOM přidáš nějaký další element, tyto eventy již nebude mít zaregistrovány.

Dá se to udělat různými způsoby, jeden z jednodušších je například zaregistrovat event na dokument, který bude event jakoby předávat dál. To uděláš nějak takto:

$(document).on("click","p",function() {
  var obsah = $(this).html();
  $(this).replaceWith('<div>' + obsah + '</div>');
});

$(document).on("click","div",function() {
  var obsah = $(this).html();
  $(this).replaceWith('<p>' + obsah + '</p>');
});
Odpovedať
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 24.