Diskuze: Více než jeden dropdown v jedné funkci?
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 14 zpráv z 14.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


Ahoj, toto by mohlo fungovať:
var buttons = document.getElementsByClassName("button");
for(var i = 0; i<buttons.length; i++){
buttons[i].addEventListener("click", function(){
buttons[i].classList.toggle("show");
})
}
S tým, že to máš celé v javascripte a nemáš funkciu v HTML.
Teraz som si uvedomil, že som to zle napísal, ale princíp je podobný.
Ak by ti to nešlo, tak napíš a ukážem ti to konkrétne na tvojom
príklade 
Díky, samozřejmě sem to mezitím celý přepsal, ale ten princip by měl fungovat i v jQuery, ne?
Uvědomil jsem si totiž, že nechci dropdown, ale colapsible div, takže jsem použil trošku jinou funkci
<div class="expandContent">
<a href="#">Click Here to Display More Content</a>
</div>
<div class="showMe" style="display:none">
This content was hidden, but now shows up
</div>
<div class="expandContent1">
<a href="#">Click Here to Display More Content</a>
</div>
<div class="showMe1" style="display:none">
This content was hidden, but now shows up
</div>
<script>
$('.expandContent').click(function(){
$('.showMe').toggle();
});
$('.expandContent1').click(function(){
$('.showMe1').toggle();
});
</script>
Ale myslím, že ten způsob bude uplně stejný jako od tebe
Vieš čo, určite sa to bude dať aj v jQuery dosiahnuť a dosť možné, že aj kratším zápisom.
Ak by si chcel použiť jQuery len kvôli tomuto, tak to je dosť "overkill",
ono celkovo podľa mňa je iná doba a tak ako jQuery niekedy bolo super, teraz
už je vo veľa prípadoch zbytočné IMHO 
Něco takovýhleho?
<script language="javascript">
function toggle() {
var ele = document.getElementById("toggleText");
var text = document.getElementById("displayText");
if(ele.style.display == "block") {
ele.style.display = "none";
text.innerHTML = "show";
}
else {
ele.style.display = "block";
text.innerHTML = "hide";
}
}
</script>
<a id="displayText" href="javascript:toggle();">show</a> <== click Here
<div id="toggleText" style="display: none"><h1>peek-a-boo</h1></div>
Ale moc tomu nerozumím...
Takže určitě tak docela s tím uplně nesouhlasím a nerozumím :-/
jasný, mužu to i celé otočit a nic se neděje, zkusím do toho implementovat tu tvojí radu s vícero divy.
Mužu poprosit o sloučení příspěvků? Nemam prava na to :-/
Ahoj, tak som to teraz v rýchlosti napísal, ako by to šlo, je to jedna z možností:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Dropdown example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<button id="btn_1" class="btn">Button 1</button>
<div id="drop_1" class="drop"></div>
<button id="btn_2" class="btn">Button 2</button>
<div id="drop_2" class="drop"></div>
<script src="index.js"></script>
</body>
</html>
CSS (style.css)
.btn{
display: block;
margin-bottom: 5px;
}
.drop{
height: 100px;
background: coral;
margin-bottom: 15px;
}
.displayNone{
display: none;
}
JavaScript (index.js)
let buttons = document.getElementsByClassName("btn");
for(let i = 0; i<buttons.length; i++){
buttons[i].addEventListener("click", function(){
let div = document.getElementById("drop_"+(i+1));
div.classList.toggle("displayNone");
})
}
Mne to funguje bez problémov, tak sa na to pozri.
Poznámka:
Takže,
Otázka - Jak zjistím, že klikám zrovna na ten button, na který klikám a má se otevřít zrovna ten daný drop_X
Prosím o vysvětlení 
Přepsaný CSS tak, aby fungovalo otevíralo po načtení, místo zavírání:
.btn{
display: block;
margin-bottom: 5px;
}
.drop{
display: none;
height: 100px;
background: coral;
margin-bottom: 15px;
}
.displayNone{
display: block;
}
Když už autor používá jQuery, tak jQuery. Nepřipadá mi zbytečné,
záleží, jak moc z něj použiješ a jak moc ti usnadní práci. Napadá mě
jednoduché řešení, mělo by snad fungovat.
Píšu z hlavy, snad bez chyb, ale principiálně by to mělo být
správně.
$('.expandContent').on('click', function(){
$(this).next().toggle()
})
Pomocí $(this) získáš jQuery objekt toho elementu, který spustil funkci. Funkce next() vrací jQuery objekt následujícího elementu v DOM.
AHoj,
Děkuju, ale já už to mám komplet hotové v tom Javascriptu a předělavat to znovu nebudu, začínám to už stylovat...jen jsem trošku ztracený, viz ten muj dotaz výše. Jde o to, že sice nechci vymýšlet kolo, ale tomu, co od někud okopíruju, chci aspon rozumět
Ahoj, súhlasím s tým, že ak jQuery už používaš na danom projekte, tak prečo to nevyužiť, ale ak to je jediná vec, ktorú chceš dosiahnuť, tak zbytočne to tam ťahať.
Čo sa týka nejakého dlhodobejšieho výhľadu tak mi príde, že dnes je obrovský "hipe" ohľadom Javascriptu, pomaly týždenne vychádzajú nové frameworky, javascript už beží aj na backende (node.js + databáza napr. MongoDB), o frontende ani nehovorím (react, angular, vue, ionic, ember,...), dokonca sa už tvoria aj mobilné aplikácie v javascripte (napr. react native), to sú veci, ktoré pred pár rokmi boli nemysliteľné. Nedovolím si predpovedať, ako to bude za pár rokov, ale kto vie a práve preto IMHO je dobré sa naučiť ten javascript.
Nemám absolútne nič proti php ani iným akýmkoľvek jazykom, len chcem
poukázať, že sila javascriptu rastie 
PS: na začiatku vlákna je ten kód/problém/otázka v javascripte, jQuery
sa objavilo až v priebehu 
Zobrazeno 14 zpráv z 14.