Autor Zpráva
vodys
Profil
Zdravím,
pro někoho možná naprostá banalita - pro mě nadlidský úkol.
Potřebuji skrýt div, pokud v jiném divu bude prázdný atribut img src.

Tedy pokud:
<div class="obrazek"><img src=""></div>
<div class="obsah">Obsah viditelný pouze s obrázkem</div>

Našel jsem něco takového, ale chce to asi vyladit
$(document).ready(function() {
   $(".obrazek").each(function() {
        var atr = $(".obrazek").attr("src"); 
        if(atr === "") {
            $(".obsah").addClass("hidden");
        } else {
            $(".obsah").removeClass("hidden");
        }
    });
});

Díky za rady, případně pomoc!


Můžete uzavřít, chyba byla v hlavičce a nastavení divu.
Správně tedy
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>

<div class="cokoliv"><img class="obrazek" src=""></div>
<div class="obsah">Obsah viditelný pouze s obrázkem</div>

<script type="text/javascript">
$(document).ready(function() {
   $(".obrazek").each(function() {
        var atr = $(".obrazek").attr("src"); 
        if(atr === "") {
            $(".obsah").addClass("hidden");
        } else {
            $(".obsah").removeClass("hidden");
        }
    });
});
</script>
Keeehi
Profil
Hele, víš že pokud budeš mít obrázků na stránce víc, tak budeš všechny obsahy skrývat/odkrývat jen podle toho, který bude obrázek vyjde jako poslední ve funkci each? Protože tam nikde nemáš vztah vůči tomu obrázkovému elementu co se zrovna konroluje.

A co to udělat pomocí CSS?
div.obrazek:has(img[src=""]) + div.obsah {
    display:none;
}
Ta první část před plus by měla najít div s prázdným obrázkem, to plus pak zajistí, že se vybere jeho první sourozenec který odpovídá zbytku selectoru za plus.
Je možné, že tam mám nějaký překlep jelikož to teď nemohu otestovat ale v zásadě by to mělo nějak takto fungovat.
Tomášeek
Profil
Keeehi:
A co to udělat pomocí CSS?
Tam si nejsem úplně jistý podporou. Pro reálné použití to asi není, ne?
Keeehi
Profil
Tomášeek:
Máš asi pravdu. Co jsem teď koukal tak :has() je zatím jen ve fázi návrhu, což jsem si zapomněl ověřit.
vodys
Profil
Mohu Vás ještě požádat o variantu js na prázdný div před obrázkem?
Zjistil jsem, že <img src=""> se mi zobrazuje pouze v backendu - frontend už ukazuje prázdný div, nejlépe tedy doplnit současný JS.

<div class="cokoliv"></div>
<div class="obsah">Zobrazit pouze pokud je v divu text či html</div>
Díky!
Tomášeek
Profil
vodys:
Tam už to jde i pomoci čistého css, :empty.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0