Autor | Zpráva | ||
---|---|---|---|
Gray blogger Profil * |
#1 · Zasláno: 23. 9. 2019, 16:48:04
Vygeneruju řadu formulářových setů a každý má svoje id. Když na jeden z nich kliknu a chci vrátit id, jak to děláte? Zjistil jsem, že toto nevrací id toho setu, ale id toho objektu na který jsem kliknul. Musím tedy napsat funkci, která bude procházet všechny rodiče dokud nenajdu název tagu fieldset? To by mi přišlo jako dost složité. Ono čím víc trávím času tady těma formulářema, tím víc mě to přestává bavit. Psaní webových stránek je neskutečně složité a zdlouhavé. To je děs.
<fieldset id=i<?=$i?> onclick="FSId=event.target.id;"> <legend><?=$words[$i]?></legend> // nějaké inputy <fieldset> |
||
Tomášeek Profil |
#2 · Zasláno: 23. 9. 2019, 17:04:15
Gray blogger:
JavaScript ma .parent , jQuery .parent() . Což se takhle mrknout do dokumentace, než položíš zbytečný dotaz?
|
||
Gray blogger Profil * |
Ale naštěstí jsem na to přišel:
<pre><fieldset id=i<?=$i?> onclick="FSId=event.target.id;console.log($(this).parents().prevObject.attr('id'));"></pre> Tomášeek: Ale to já přece vím, že má parent(), ale jak jsem psal, ten parent() vrací pokaždé jiné id a já chtěl to id, které vyvolalo událost. Ty si nečetl mou otázku, protože já se ptal na to jak to řešíte. Protože psaní cyklu zde mi přijde dost podivné. Pokaždé když bych kliknul na jiný element, který je zanořený ve fieldsetu je jiná struktura, takže parent() samotný mi nepomůže. |
||
Kcko Profil |
Gray blogger:
closest(); btw. proč to rveš jako inline js a nepíšeš to tak, jak se to normálně (většinou) píše? |
||
Koukal Profil * |
#5 · Zasláno: 24. 9. 2019, 05:02:17
api.jquery.com/closest
Dobrý příklad $( "li.item-a" ) .closest( "ul" ) .css( "background-color", "red" ); Kcko: Dík za odkaz. Byl to jen test. Teď to mám takto: <fieldset id=i<?=$i?> onclick="init(this);"> |
||
blaaablaaa Profil |
#6 · Zasláno: 24. 9. 2019, 08:08:53
Koukal:
Spíš takto - je přehlednější mít js na jednom místě, než různě rozeseté v html. <fieldset id=i<?=$i?> class="muj-fieldset"> $(".muj-fieldset").on("click", function(){ //... }); |
||
Koukal Profil * |
#7 · Zasláno: 24. 9. 2019, 09:56:20
blaaablaaa:
No já nevím, když pracuju s dlouhým html formulářem a mám ho dole a JS mám taky dlouhý a mám ho nahoře, tak to přehledné nebude. Ale mohl bych to dát do dvou souborů. Jeden na html formulář druhý na js, který ovládá ty fieldsety. Ale myslím, že tak jak to mám je to pro mě rychlejší pro to ruční hledání. Neboť pokud je formulář moc dlouhej a je tam moc javascriptu, tak jak to dolaďuju tak to chce furt editovat html i js. Jako ve výsledku by to přehlednější bylo, ale snad až bych odladil ten formulář. |
||
blaaablaaa Profil |
#8 · Zasláno: 24. 9. 2019, 10:04:21
Koukal:
Ono je většinou lepší mít js a html zvlášť v souborech. |
||
Koukal Profil * |
#9 · Zasláno: 24. 9. 2019, 14:31:40
blaaablaaa:
To asi jo, ale snad až dokončím formulář. Zkoušel jsem ten tebou doporučený postup a nefunguje mi. $("input[type='radio']").on("click", hideAll($(this)) ); function hideAll(o){ var nonCkIn = $(o).parent().not("input:checked"); console.log($(o)); } console.log mi vypisuje 0 nalezených objektů, protože mě odkazuje na rodičovský dokument. Jak mám odkázat na ten aktuální prvek? Onclick je v tomto právě jednodušší protože do argumentu funkce stačí zadat this. |
||
blaaablaaa Profil |
#10 · Zasláno: 24. 9. 2019, 14:46:59
Koukal:
Ma to byt takto $(".muj-fieldset").on("click", function(){ //tady lze pouzit $(this) }); |
||
Koukal Profil * |
#11 · Zasláno: 24. 9. 2019, 17:53:15
blaaablaaa:
No a co když budu chtít ten kód opakovat na více elementech? To mám furt psát function(){ //tady lze pouzit $(this) } |
||
Mlocik97 Profil |
#12 · Zasláno: 24. 9. 2019, 18:04:28
môžete použiť kombinovaný selektor
|
||
RastyAmateur Profil |
#13 · Zasláno: 24. 9. 2019, 18:04:42
Koukal:
Ano. Nebo si myslím, že můžeš vše narvat najednou. $(".a, .b, .c, .d").on("click", function() { example(this); }) |
||
Koukal Profil * |
Mohu se tě ještě ně něco zeptat?
<section> <Label>1) </Label><p> <INPUT>text (text v závorce)<BR> <INPUT>text (text v závorce)<BR> <INPUT>text (text v závorce)<BR> </section> Jak v Jquery specifikovat selektor, aby vrátil ten text za Input? Přesně řečno Mám vybraný například ten první radio input a při kliknutí chci schovat to co je v závorce se závorkou. To ale budu muset zabalit do nějakého elementu ne? Já bych to raději udělal automaticky. Jde o to že na mobilních zařízeních chci tu položku zkrátit, aby se neroztahovala, když už jsem ji vybral. Takže kolem (text v závorce) bych chtěl vložit tak např. strike. RastyAmateur: Dobrý nápad :) Ta závorka v textu není vždy, jen někdy |
||
Keeehi Profil |
Koukal:
„Jak v Jquery specifikovat selektor, aby vrátil ten text za Input?“ Nevím jak selektor ale můžeš použít next() |
||
Koukal Profil * |
Tak toto nechápu, proč se mi nevypisuje ten vybraný radiobox (ostatní jsou skryté):
$("input[type='radio']").on("click", function(){ var allInputs = $(this).parent().find("input"); var NonChk = $(allInputs).not("input:checked"); var Chk = $(allInputs).find("input:checked"); $(NonChk).hide(); console.log(Chk); // console.log($(Chk).next()); }); } Chrom mi píše: [prevObject: k.fn.init[4]] length : 0 prevObject : k.fn.init[4] __proto__ : Object[0] Ten vybraní input radio tam není vidět. Mám to. Tak find filtruje potomky, ale já chci filtrovat současné elementy v poli, takže použiju filter. K tomu hledání textu za elementem je tady odpověď: Get the text after span element using jquery Elegantní se zdá být použít eq(), ale co když tam bude nějaký wrapper jako tagy u. i, em ... |
||
RastyAmateur Profil |
#17 · Zasláno: 24. 9. 2019, 19:48:15
Koukal:
„K tomu hledání textu za elementem je tady odpověď“ Spíš bych řekl, že odpověď je v [#14]. Přijde mi mnohem mnohem rozumnější to zabalit do nějakého elementu. Vlastně bych nikdy nenechával text válet se jen tak někde za inputem, nebo kdekoliv jinde. |
||
Gray blogger Profil * |
#18 · Zasláno: 25. 9. 2019, 22:06:42
RastyAmateur:
Jo, ale já beru v potaz celkovou přehlednost kódu. Nedávno mi například někdo navrhl zabalit řádek s inputem do label, jenže lable už používám jako nadpis otázky ve formuláři. Navíc nemám rád tagy s dlouhým názvem. Co mi v HTML/DOM schází jsou tagy c-h. Je tam volný nevyužitý prostor a tyto tagy bych rád použil k takovému balení o kterém mluvíš. Pokud jako baliče mám používat jen div, span, p, section, article tak to mi přijde nedostačující. Na tom řádku s input používám už "u", "i" a em tagy, u dokonce dvakrát vnořené. No a teď si představ že tam přidám další tagy, tak se to zase znepřehlední. Pokud píšu kód tak pro mě je vlastně přehlednější na konec dát br, jenže zde vzniká problém s tím balením. Tak jsem si na to napsal funkci v JS, která mi tam ty balící tagy přidá automaticky. Ale to je za jiným účelem, to čistě kvůli operacím, které tam provádím s textem ("zkracování" dlouhého textu, respektive skrytí jeho části, nikoliv smazání). |
||
Časová prodleva: 6 let
|
0