Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Modrá je dobrá
zelená je lepší

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub JavaScript [ŽP: neomezená] (kategorie Programování) moderuje Šéf Lopuchu.
Archiv
- http://al3x.3web.cz/js/ - najdete zde zaklady javascriptu je tam i docela dobre vysvetleny cookies
- specifikace ECMAScriptu - standard založený na JavaScriptu a JScriptu.
Download Opera
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: vxezpod
[ 398 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
huh huh 1.12.2011 12:53  638
$(this).parent().parent().parent().addClass("active") ?
$(this).closest("div.a").addClass("active") ?
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 1.12.2011 08:16  637
Nikdo nic?
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 29.11.2011 16:29  636
Mám tenhle funkční kód:
$(document).ready(function(){
$("input").focus(function() {
$(this).parent().addClass("active")
});
});


Který mi zajišťuje, že pokud označím input, tak nadřazenému prvku (label) přidá class active.
Jenže já bych potřeboval tu třídu přidat nadřazenému prvku o dvě úrovně výš.

Mám tuto strukturu:

<div class="a">
<div id="b" class="form-item">
<label class="option" for="edit">
<input id="edit" class="form-radio" type="radio" value="1" name="edit">
Text
</label>
</div>
</div>


A pokud je tento input zatžený, tak bych potřeboval tu active třídu dostat do div class "a"
david11 David11 - Bilbo..and the mouse police never sleeps 26.5.2011 10:43  635
... a ještě jsem teď přišel na to, že co se týče té nemožnosti zavolat při události body resize v kódu reload, se vymyká (z prohlížečů, které jsem testoval) pouze FireFox. Zafunguje to jak v MS Exploreru, tak v Google Chrome a i v Opeře. Nevíte někdo proč to ve FF nejde? Resp. jak tam v tom kódu ten reload vynutit???
david11 David11 - Bilbo..and the mouse police never sleeps 26.5.2011 10:29  634
huh [631] Díky, vyzkouším to v nějakém tom vyšším IE.

Teď jsem ale přišel na to, že ten prapůvodní problém [614] mi ve FireFoxu částečně přetrvává i po té radě od huh [618]. Protože já potřebuji, když vypisuji ten TESTOVACI_RETEZEC, v tom řetězci zareagovat na změnu velikosti okna (tzn. jako bych v tom testovacím příkladě potřeboval místo stringu TESTOVACI_RETEZEC vypsat aktuální velikost okna). Tzn. po té radě [618] mě tam ten řetězec sice nezmizí, ale nemám šanci ho tam zaktualizovat (zaktualizuje se až když vynutím znovunačtení stránky např. kliknutím na tlačítko reload v prohlížeči). Tzn. mám zcela stejný problém jako předtím: v IE mi ten reload (jeho zavolání v kódu) zafunguje a je vše OK, v FF (v kódu) nezafunguje a řetězec se tedy kódem nezaktualizuje.
Řekl bych, že pes je přece jen zakopán v tom, že nemohu při události body onresize po překreslení bitmapy v jiném rozlišení (pomocí toho innerHTML) zavolat vykreslení textu (pomocí write). Proč to nejde? Resp. nevíte někdo jak to nakódovat, aby to šlo? Díky.
huh huh 25.5.2011 12:45  631
position:fixed by v IE 7 a vejš mělo ve standardním módu fungovat; takže stačí správnej doctype
david11 David11 - Bilbo..and the mouse police never sleeps 25.5.2011 12:40  630
To se týká jen IE6? Nějaký průkaznější test jsem nedělal, ale ten samý kód s ošetřením pro IE (bez specifikace verze) se mi chová stejně v IE6 i v IE8. Čili to bych se pak musel "vytento" na všechny IE, nebo se mýlím?
Nebo to if(navigator.appName == "Microsoft Internet Explorer") vraci true jen pro IE6???
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 25.5.2011 12:10  629
ja bych se na ie6 vytento...
huh huh 24.5.2011 16:56  628
David11 [627]: ja bych se na veskerej JS vybod a pokud nutne chces fixed i v IE 6 tak bych pouzil todle.
david11 David11 - Bilbo..and the mouse police never sleeps 24.5.2011 16:03  627
Jo, máš pravdu, že "kvůli lidem jako jsem já" ; - ) - já jsem to totiž opral ze stránek Jak psát web. Kdyby to tam bylo vyřešeno líp, opral bych to líp : - )
Nicméně teď mi došlo, proč v tom kódu, který jsem opral, je to if(document.all). Jestli to dobře chápu, je to to samé jako bych tam napsal if (navigator.appName == "Microsoft Internet Explorer").
Aha. Tak jsem ještě před odesláním toho příspěvku trochu zapátral na Jak psát web a zjistil jsem, že tam autor dokonce doporučuje "v praxi" používat to if (document.all) místo toho if (navigator.appName == "Microsoft Internet Explorer") (viz http://www.jakpsatweb.cz/javascript/objekt-window.html#navigator). Co si o tom myslíš? On tam i píše, že ten document.all zná i Opera, ale Opera, jak jsem vyzkoušel, nepotřebuje k tomu fixování pouštět tu funkci testFix (resp. fixujTlacitka), tak se mi jeví jako (minimálně v tomto případě) lepší použít to if (navigator.appName == "Microsoft Internet Explorer"), protože jediný, kdo ji vyžaduje pustit, aby to zafungovalo, je IE. Máte s tímhle někdo zkušenost, nebo to vidíte tak, že "slušný programátor se do nějakých takovýchhle konstrukcí vůbec nepouští"? ; - )
huh huh 24.5.2011 14:27  626
Oni naštěstí ostatní prohlížeče kvůli lidem jako ty :-) interpretují
if (document.all)
jako false (tzv. neviditelný/nedetekovatelný document.all), takže se ten mimo IE nevykoná.
david11 David11 - Bilbo..and the mouse police never sleeps 24.5.2011 14:13  625
huhDíky, až teď mi po té Tvé poslední odpovědi došlo, že to tam skutečně mám jen kvůli IE. Resp. když obsah té funkce testFix (fixujTlacitka) z toho kódu celý vyhodím, přestane to fungovat jen v IE (tlačítka přestanou být fixována), v ostatních prohlížečích ale fungují i nadále. To mě docela dostalo. Možná že už začínám chápat proč máte IE za "nestandardní" prohlížeč : - )

Ostatní prohlížeče se s tím kódem, když ho tam nechám, vyrovnají, fungují i s ním. Můžeš mi prosím ještě poradit jestli bude čistší, když tam ten kód pomocí ifu nechám jen pro IE a pro ostatní prohlížeče se nebude volat? Je skutečně pro ostatní prohlížeče irelevantní resp. potencionálně by mohl být i škodlivý? Díky.
huh huh 24.5.2011 13:08  624
Takhle, pokud ta část s document.all je jenom určená pro IE, tak OK, ale obecně jde o proprietární zastaralé řešení, které se dá snadno nahradit standardním getElementById.
david11 David11 - Bilbo..and the mouse police never sleeps 24.5.2011 12:13  623
huh [618]Díky, s tím DIVem a bez toho reload() už to funguje přesne tak, jak jsem chtěl. Teda musel jsem do toho Tvého kódu vrátit tu fci testFix(id). Což mě, jako naprostého amatéra v programování webu, vede k otázce proč jsi napsal "document.all nekomentuji". Pokud je to ale všem zde natolik zřejmé, že bys "nošením dříví do lesa" všechny votravoval, můžeš mi to kdyžtak nějak trochu rozvést do pošty? Anebo sem, podle Tvého uvážení, třeba by to někoho taky zajímalo. ; - )
(Já to tam vrazil proto, že jsem si na stránkach Jak psát web našel příklad jak zafixovat objekt na stránce a vopral jsem to přesně podle toho příkladu.)

Každopádně ještě jednou díky, to vyražení id="PREPOCTI" z <BODY ... > a vražení pomocí DIV mezi <BODY> ... </BODY> bylo přesně to, co jsem potřeboval poradit.
Jasně, ten můj kód je asi hodně nestandardní resp. ošklivý, což může asi vést k problémům s nekompatibilitou v budoucích prohlížečích (?), ale zatím to funguje OK, tak to zatím předělávat nebudu : - ) Měl jsem ale za to, že to je naopak elegantní, vyřešit všechno jednou jednoduchou a jednou složitou funkcí javascriptu, ale jak jsem psal, v programování webu nemám abici být profesionál ; - )
wronski Wronski Jsou to zrůdy. - Sofistikované. 23.5.2011 21:20  622
Když bych to neznačkoval jako inline, a dal k tomu css, tak si vyřešim nežádoucí značkování v komentářích a uvozovkách, ale zas to pak bude nepřenosný... Takže asi zůstane u lehký primitivní verze.

[ 398 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt