Autor Zpráva
Koukal
Profil *
NNP je zkratka Neutral, Negative, Positive. Chci vybrat ty spany, které neobsahují ani negativní span.n, ani pozitivní span.p ani neutrální span.m.

Dá se udělat něco jako toto?

NonNNP = $("span:not(.n)").not("span:not(.m)").not("span:not(.p)");
  

Ani toto mi nefunguje:
NonNNP = $("span:not(.n)").not("span:not(.p)");
to vyfiltruje jen ty tagy .p


třídy p
RastyAmateur
Profil
A prostě span:not(.p):not(.m):not(.n) nejde?
Koukal
Profil *
Jo díky, tuhle syntaxy jsem neznal.


Dal by se ten selektor poupravit ještě tak, aby byl vylouřen selektor s třídou span_wrapper, ale aby byli zahrnuty jednotlivé části, které které jsou uvnitř toho wrapperu? Ne všechny. Jen ty co určím v podmínce.

Když se zahrne celý build_wrapper a celý nature_wrapper tak je to špatně.

<span id=build_wrapper class=span_wrapper>
<INPUT name='okruh_adv' type='radio' value=47><span class=Build>Budování (skládání věcí dohromady za účelem vytvoření díla, ne nutně stavby)</span></span><BR>
<span class=product><INPUT name='okruh_adv' type='radio' value=48><span class=build>Bydlení</span> (dům, příbytek, stan)<BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=49><span class=build>Stavba obecně</span> (zeď, sloup, studna i nádvoří)<BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=50><span class=build>Část domu</span> (podlaha, poschodí, schody, okno, dveře, podkroví)<BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=51><span class=build>Stavba za účelem získávání nerostných surovin</span> <BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=52><span class=build>Stavba za účelem výroby (dílna, kovárna, pekárna)</span> <BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=53><span class=build>Lidské dílo</span> - vybavení interiéru (stůl, trůn)<BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=54><span class=build>Úložný prostor</span> (skříň, truhla, archa)<BR></span>
</span>
<INPUT name='okruh_adv' type='radio' value=55>Věci související s dopravou nebo uchycováním nákladu (náklad, pytel, břemeno, popruh, lano)<BR>
<span class=product><INPUT name='okruh_adv' type='radio' value=56>Lidské dílo - dopravní prostředek (vůz)<BR></span>
<span class=product><INPUT name='okruh_adv' type='radio' value=57>Lidské dílo - zbraň (šíp)<BR></span>
<span id=nature_wrapper class=span_wrapper >
<INPUT name='okruh_adv' type='radio' value=58><span class=nature>Živel - přírodní síla</span> (oheň, voda, povodeň, déšť, bouřka, liják, vítr, zemětřesení, blesk, hrom, atd.)<BR>
<INPUT name='okruh_adv' type='radio' value=59><span class=nature>Topologie, tvar zemského povrchu</span> (kopec, vrch, dolina, rokle, strž)<BR>
<INPUT name='okruh_adv' type='radio' value=60><span class=nature>Nekonkrétní krajina</span> (pustina, poušť, pramen)<BR>
<INPUT name='okruh_adv' type='radio' value=61><span class=nature>Příroda - stromy</span> (strom, les)<BR>
<INPUT name='okruh_adv' type='radio' value=62><span class=nature>Příroda - keře</span><BR>
<INPUT name='okruh_adv' type='radio' value=63><span class=nature>Příroda - vše nižšího vzrůstu</span> (pastvina, tráva, bylina)<BR>
</span>


Z níže uvedených položek chci aplikovat funkci hide na všechny kromě tučně zvýrazněného:
* Bydlení (dům, příbytek, stan)
* Stavba obecně (zeď, sloup, studna i nádvoří)
* Část domu (podlaha, poschodí, schody, okno, dveře, podkroví)
* Stavba za účelem získávání nerostných surovin
* Stavba za účelem výroby (dílna, kovárna, pekárna)
* Lidské dílo - vybavení interiéru (stůl, trůn)
* Úložný prostor (skříň, truhla, archa)
* Věci související s dopravou nebo uchycováním nákladu (náklad, pytel, břemeno, popruh, lano)
* Lidské dílo - dopravní prostředek (vůz)
* Lidské dílo - zbraň (šíp)

Jestli mě chápeš jak to myslím? Rozhodující pro mě je v tomto případě aby se výsledky nerovnaly span.p span.m a span.n ale nesmí být vyloučený celé wrappery. Spany span.p span.m a span.n ale mohou být uvnitř toho wrapperu, stejně jako to tam nemusí být. I když zrovna v tomhle případě nejsou. Ale mám jiné wrappery kde chci uvnitř vybrat vše co není span.product.

Takže když teď chci vybrat vše co není span.p span.m a span.n tak by se měly vybrat ty prvky uvnitř bez wrapperu.
Kajman
Profil
Zkuste html kód vyčistit od nepodstatných věcí pro test, odstranit ukončování spanů, které nemají začátek, zformátovat vnoření pro lidi a v tom kódu vyznačte počáteční značky tagů, které chcete vybrat selektorem. Moc to teď k pochopení není.
RastyAmateur
Profil
Koukal:
Nedokážeš nějak snáze a obecněji popsat svůj problém? To jako máš nějaké radio inputy a chceš zobrazovat obsah podle toho, který z nich je zaškrtnutý?
Koukal
Profil *
RastyAmateur:
V podstatě ano. Je tam hodně radio inputů, které jsou rozděleny do částí, aby je uživatel mohl některé schovat a tím se zkrátil jejich seznam. Celkem 126 položek se dá zkrátit třeba na polovinu.
RastyAmateur
Profil
Co zkusit něco takového? Je to sice hodně naivní řešení, ale funguje. Když si s tím trochu pohraješ, může z toho vzniknout i vcelku dobrý a udržitelný kód.


Ještě doplním, jak to funguje, kdyby to z kódu nebylo jasné - každý input je obalený v divu. Když ten div má nastavenou třídu, defaultně se skryje. Když u nějakého inputu změníš zaškrtnutí, podívá se to, jestli to má nastavený atribut data-show a když ano, vezme ho a všechny třídy podle hodnoty toho atributu zobrazí/skryje.
Koukal
Profil *
Promiň, to je ale hodně nepřehledný kód. Já to vyřeším asi tak, že to budu odkazovat přes konkrétní rodičovský prvek. Můj formulář má takovou struktůru

<fieldset class=green> (jeden konkrétní fieldset, ale je jich celkem 5)
<legend>Pátá část</legend>
<section id=circle>
1. následuje sekce radioboxů nezabalená
2. následuje sekce radioboxů zabalená do např.
<span id=society_wrapper></span>
3. to se tak různé promíchává podle druhu radioboxů
</section>

Za zvážení stojí jestli bych neměl zabalit to co není zabalené aby to mělo stejnou strukturu.
fieldset -> section -> span -> input type=radio

Tím pádem bych měl dvě skupiny:
fieldset -> section -> span class=nezarazeno
fieldset -> section -> span class=zarazeno_do_jakesi_skupiny


Ještě ale musím provést nějaké drobné editace ohledně zabalování toho řádku s radioboxem.

Mám to udělané tak, že některé položky se mohou podrhnout stisknutím tlačítka. Je to jeden ze způsobů zvýrazňování položek v dlouhém seznamu. Nahraju někam fotky:


1.bp.blogspot.com/-8nCRdvpLke0/XYXiLVWCJBI/AAAAAAAADno/1a3QXeu6cxcr2iNtk35aQ_CdBHNllf0uACNcBGAsYHQ/s1600/design1.png

1.bp.blogspot.com/-HUh4RwdMi-A/XYXiLN9dAGI/AAAAAAAADns/4oikrhTUjrgr7Wp-1AKCOFDxjR_KbWyzwCNcBGAsYHQ/s1600/design2.png

No ale jak je to podtržené celé, tak to nechci, chci podtrhnout jen tu hlavní část věty, takže to musím zabalit jinak.

Zároveň tam jsou tlačítka na schovávání a ty schovávaj celý řádek, takže potřebuju celkem 3 wrappery.
Tomášeek
Profil
Koukal:
Jestli chceš s tím kódem pomoci, tak dodej odkaz na živou ukázku, tzn. na stránku, kde je vše k vidění. Zkrácený (s jinou strukturou) kód nedává smysl, kód s nějakým markupem a poznámkou, že jiný kód vypadá jinak také ne, kilometrový textový popis problému také ne. Obrázek také ne.
RastyAmateur
Profil
Koukal:
Promiň, to je ale hodně nepřehledný kód.
No tak rozhodně mi přijde přehlednější, než to, co tu vytváříš ty :D Tahle stand-alone ukázka kódu mi to přijde vlastně i v pohodě. Spíš jsem myslel, že když bys to implementoval do celé aplikace, tak by to chtělo poupravit, aby se v tom dalo celkově vyznat...

Za zvážení stojí jestli bych neměl zabalit to co není zabalené aby to mělo stejnou strukturu.
Vůbec tomu nerozumím, ale ano, udělej to. Je totiž hodně dobrý nápad mít všude stejnou strukturu...

Zároveň tam jsou tlačítka na schovávání a ty schovávaj celý řádek, takže potřebuju celkem 3 wrappery.
Celý řádek, nebo sekci? Jestli pojmem "3 wrappery" myslíš 1 wrapper pro každou ze 3 sekcí, tak souhlasím.

Jediné, co mě napadá z té první fotky je, že bych vážně strašně nechtěl tam muset něco vyplňovat. Takových tlačítek! Něco jako UX, halo? Dokonce 7 z 11 tlačítek obsahuje slovíčko "Schovat". Nebylo by vhodnější vytvořit nějaký jednoduchý interaktivní formulářík s checkboxy, kde by si uživatel rovnou naklikal, co vlastně chce zobrazit a co ne?
Koukal
Profil *
Jeden řádek teď vypadá takhle:
1)
<u class=n><INPUT name='okruh_adv' type='radio' value=116><u>nedostatek</u><BR></u>
To první "u" je wraper řádku, vnořené "u" je na podtrhávání. Ono to normálně podržžené není, ale když klikneš, podtrhnou se ty slova kde ten vnořený "u" je.
Další řádek pak vypadá takhle:
2)
<INPUT name='okruh_adv' type='radio' value=115>hojnost, spokojenost<BR>
3)
A jiný takto:
<u class=product><INPUT name='okruh_adv' type='radio' value=97><em class=komunikace><u>hmatatelná pomůcka komunikace</u></em> (kniha, dopis, rodopis či rodokmen)<BR></u>

Teď potřebuju už jen zabalit ty co nemají ten vnější wrapper, aby byla stejná struktura. Tím vyřeším celý problém balení.


Ale zase tam máš u tlačítek barvu, takže vidíš že na schovávání jsou tlačítka červené a oranžové.


Ještě mě napadlo k těm tlačítkům schovat dát jinou barvu ohraničení, aby byli výraznější. Co takhle změnit tu tmavě šedou dole a vpravo na tmavě červenou? Nevíš jak změnit tuhle část ohraničení přes css? Jde to?


Dneska jsem dostal nápad k tomu co říkáš, ale udělám to v sekcích co byli před tím.
Tam ke třeba otázka: "Je možné tuto věc pít/vypít?" a tím mohu odfiltrovat potraviny automaticky, když na to klikne. Ale to pak musím schovat tlačítko na zvýraznění potravin.
Tomášeek
Profil
Koukal:
Skoro bych ti i pomohl, ale asi ti popřeji hodně štěstí, když nejsi schopný odkázat projekt, kde by se to scriptování dalo nad reálnými daty a markupem vyzkoušet, případně rovnou i navrhnout nový funkční markup.

Tyhle popisy co kde máš, nemáš, chceš mít a nemít jsou fakt na prd. Takže, good luck :-)
Koukal
Profil *
Tomášeek:
Zatím jsem se k tomu nedostal. Teď jsem realizoval RastyAmateurho řešení pomocí select boxu.

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