Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Programovacie jazyky, rady, poradňa...
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Ahojte, zkousim si ruzne blbustky v jquery a snazim se pouzivat i if, else,...

Netusite proc se mi stale vypisuje jen if?

Kód: Vybrať všetko

<script type="text/javascript">

$(document).ready(function(){

    var hodnota = $('input[type="text"]').val();

    $('input[type="text"]').blur(function(){
      if(hodnota < 3){
        $('span').text('Velmi malo');
      }
      else{
        $('span').text('Jo dobre');
      }
    });

});

</script>

<div class="container">
    <div id="obsah" class="sixteen columns clearfix">

    <form action="">
        <label><strong>Jméno:</strong><input type="text" value="" /><span></span></label>
    </form>

    </div>
</div>
TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa TommyHot »

Nefunguje ti to preto, ze si do premennej ukladas hodnotu inputu este predtym nez si vytvoris event listener. Navyse na dany input je lepsie ukazovat cez this. Dalsia vec je, ze chces ziskat pocet znakov inputu, nie jeho hodnotu, preto treba pouzit $(this).val().length. Tu mas funkcny priklad http://jsfiddle.net/QwrHM/
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Paradni, pokoumam ten tvuj kod :-) Dekuju

//autoeditácia príspevku (29 Sep 2013, 18:08)
Prosim Vas, pokud bych chtel tu promennou "maxSlov" dat napr. do tagu <strong> jak to mam udelat? Protoze kdyz to zabalim do tech tagu tak to prestane cele fungovat.

Kód: Vybrať všetko

<script type="text/javascript">

$(document).ready(function(){

    var maxSlov = 160;
    $('#feed_back').html('Zbývá ještě ' + maxSlov + ' znaků.');

    $('#textarea').keyup(function(){
      var textDelka = $('#textarea').val().length;
      var textZbyvajici = maxSlov - textDelka;

    $('#feed_back').html('Zbývá ještě ' + textZbyvajici + ' znaků.');
    });

});

</script>
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

kluci, mam tu nalinkovanou hlavicku. Problem je ze jquery.mobile ma konflikt a tim jquery.dlmenu.
Pokud se jquery.mobile odstrani tak jquery.dlmenu zacne fungovat. Tusite nekdo zdali se tento problem da nejak vyresit? Daji se ty scripty od sebe nejak izolovat?

Kód: Vybrať všetko

	<link rel="stylesheet" type="text/css" href="/konfigurator/css/skeleton.css" media="all" />
    <link rel="stylesheet" type="text/css" href="/konfigurator/css/project-style.css" media="all" />
    <link rel="stylesheet" type="text/css" href="/konfigurator/css/jquery.mobile-1.3.1.css" media="all" />
    <link rel="stylesheet" type="text/css" href="/css/menu.css" media="all" />

	<link rel="shortcut icon" href="/konfigurator/img/favicon.ico" type="image/x-icon" />

    <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="/konfigurator/js/jquery.mobile-1.3.1.js"></script>

    <script type="text/javascript" src="/js/modernizr.custom.js"></script>
    <script type="text/javascript" src="/js/jquery.dlmenu.js"></script>

    <script type="text/javascript" src="/js/scripts.js"></script>
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Prosim Vas mate nekdo zkusenosti s jQuery UI datepicker?

Na strance mi normalne funguje ale netusim proc, ale posune mi cele body tak o 10px ze zhora. Pokud na ten picker kliknu a zobrazim si kalendar tak ten 10px (nevim bug) zmizi. Jakmile dam F5 tak se tam ten 10px objevi znovu. Nestalo se Vam to nekomu? Je to ta lajna nad tim modrym pruhem. A teda nema 10px ale jen 5px. Coz je snad jste horsi :(
Prílohy
problem.jpg
problem.jpg (20.09 KiB) 1854 zobrazení
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa audiotrack »

to mi príde skôr ako chyba css. Alebo teda ani nie chyba, ale nejaká vlastnosť v tej téme čo si si stiahol pre datepicker. Ale bez live ukážky ti ťažko povedať ktorá. S najväčšou pravdepodobnosťou sa ti tam niečo prepisuje. Skús prehodiť css v hlavičke, najprv tému a potom svoje css či bude problém pretrvávať (alebo sa objavia iné)
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Dekuju Audio, mrknu se na to :-) Zvlastni ze v IE a Chrome to funguje normalne.

//autoeditácia príspevku (12 Okt 2013, 15:55)
Prosim Vas da se nejak u slideToggle zachiti zda-li je zrovna slideUp nebo slideDown?
Potrbuju aby mi box po kliknuti na obrazek (ikonu) provedl slideUp a zaroven potrebuju aby se zmenil obrazek (ikona). A to same potrebuju i kdyz se provede slideDown.

Jde to nejak zachytit?

Kód: Vybrať všetko

<div class="dostupnost_line">
    <div class="container">
        <div class="sixteen columns">
            <p><strong>Ověřte prosím dostupnost rozvozu</strong>, zadejte Vaše poštovní směrovací číslo.</p>
            <form action="">
                <input type="text" name="psc" value="" />
                <input type="submit" name="" value="Ověřit" />
            </form>
        </div>
    </div>
</div>

<div class="marker_line">
    <div class="container">
        <div class="sixteen columns marker">
            <img src="/img/marker_open.png" alt="dostupnost" />
        </div>
    </div>
</div>

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker img').click(function(){
      $('.dostupnost_line').slideToggle();
    });

});
Takhle to funguje, akorat bych potreboval aby se po kazdem kliknuti zmenil attr toho obrazku.
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa awtt »

zmen si ten obrazok cez css a potom
$(this).toggleClass()...

jQuery animacie su ale strasne pomale, radsej to ries cez tranzicie.
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Mozna by se to dalo udelat i tak ze bych do HTML vypsal oba obrazky a jednomu dal display:none a potom uz bych jen nejak prepinal ten display none.

//autoeditácia príspevku (12 Okt 2013, 18:46)
Treba takhle mi to funguje ale jen kdyz kliknu poprve, jak to potom vratit do puvodni polohy?

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker img').click(function(){
      $('.dostupnost_line').slideToggle(function(){
        $('.marker img').attr('src', '/img/marker_open.png');
      });
    });

});
//autoeditácia príspevku (12 Okt 2013, 19:15)
Myslim neco jako tohle, akorat ze tohle nefunguje :(

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker img').click(function(){
      $('.dostupnost_line').slideToggle(function(){

        if( $('.marker img').attr('src', '/img/marker_close.png') ) {
          $('.marker img').attr('src', '/img/marker_open.png');
        }
        else {
          $('.marker img').attr('src', '/img/marker_close.png');
        }

      });
    });

});
//autoeditácia príspevku (12 Okt 2013, 19:30)
Yeah, uz to funguje, snad je to dobre napsane.

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker img').click(function(){
      $('.dostupnost_line').slideToggle(function(){

        if( $('.marker img').attr('src') == "/img/marker_close.png" ) {
          $('.marker img').attr('src', '/img/marker_open.png');
        }
        else if ($('.marker img').attr('src') == "/img/marker_open.png") {
          $('.marker img').attr('src', '/img/marker_close.png');
        }

      });
    });

});
TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa TommyHot »

V ramci event listeneru by si mal odkazovat na element nad ktorym vykonavas event cez "this":

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker img').click(function(){
      var self = this;

      $('.dostupnost_line').slideToggle(function(){

        if( $(self).attr('src') == "/img/marker_close.png" ) {
          $(self).attr('src', '/img/marker_open.png');
        }
        else if ($(self).attr('src') == "/img/marker_open.png") {
          $(self).attr('src', '/img/marker_close.png');
        }

      });
    });

});
2 pripomienky ku kodu.

1) Pokial je to mozne, tak na elementy v ramci DOM odkazuj priamo. Teda nie

Kód: Vybrať všetko

$('.marker img')
ale radsej

Kód: Vybrať všetko

$('img.nejaka-trieda') // alebo este lepsie $('#id-elementu')
To druhe sa vykona rychlejsie, kedze obaluje nativne javacsript metody (getElementsByTagName() alebo getElementById()), narozdiel od prveho riesenia, ktore musi prehladavat cely DOM.

Ak uz nevyhnutne potrebujes odkazovat na child cez parenta, tak je podstatne rychlejsie (na novsich browseroch) pouzivat find() metodu:

Kód: Vybrať všetko

$('.marker').find('img')
Mam k tomuto aj zdroje, ktore popisuju ako vplyvaju jednotlive selectory na performance, ale neviem sa teraz dostat na firemny mail, takze az pondelok.

2) toto mi pride ako lepsie riesenie, hlavne keby si chcel dodatocne menit element aj cez CSS ked je aktivny/neaktivny. Netusim ako je to s vykonom, ale da sa to zmerat cez jsperf.com

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker').find('img').click(function(){
      var self = this;

      $('.dostupnost_line').slideToggle(function(){

        if( $(self).hasClass('active') )
        {
          $(self).attr('src', '/img/marker_close.png').removeClass('active');
        }
        else
        {
          $(self).attr('src', '/img/marker_open.png').addClass('active');
        }

      });
    });

});
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Paradni, dekuju moc, ja si nakonec tu promennou vytvoril ale uz jsem tot u nedaval, ale to tvoje je super, s dovolenim pouziju to tvoje reseni :-) Akorat si to budu muset nejak prostudovat jak to vlastne funguje treba to hasClass,...
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa *****HERO***** »

TommyHot napísal: ....
2) toto mi pride ako lepsie riesenie, hlavne keby si chcel dodatocne menit element aj cez CSS ked je aktivny/neaktivny. Netusim ako je to s vykonom, ale da sa to zmerat cez jsperf.com

Kód: Vybrať všetko

$(document).ready(function(){

    $('.marker').find('img').click(function(){
      var self = this;

      $('.dostupnost_line').slideToggle(function(){

        if( $(self).hasClass('active') )
        {
          $(self).attr('src', '/img/marker_close.png').removeClass('active');
        }
        else
        {
          $(self).attr('src', '/img/marker_open.png').addClass('active');
        }

      });
    });

});
ked uz tolko riesis tu performance, nebude lepsie spravit

Kód: Vybrať všetko

var $self = $(this)
a potom sa odvolavat na to?
TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa TommyHot »

Good point, pravdepodobne hej.
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

Tusite nekdo kde by mohla byt zrada?

Kód: Vybrať všetko

<script type="text/javascript">
    $(document).ready(function(){
        $('ul#side_menu').find('li').click(function(){

            var $rodic = $(this);
            var $potomek = $(this).find('ul');

            $rodic.find('ul').slideUp();
            $potomek.not(':visible').slideDown();
        });
    });
</script>

Kód: Vybrať všetko

<div class="container">
    <div class="three side columns">
        <ul id="side_menu">
        <li>Alpské disciplíny
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Akrobatické lyžování
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Běh na lyžích
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Snowboarding
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Severská kombinace
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Skok na lyžích
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Travní lyžování
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Základní lyžování
            <ul>
                <li><a href="">Aktuality</a></li>
                <li><a href="">O disciplíně</a></li>
                <li><a href="">Reprezentace</a></li>
                <li><a href="">Dokumenty</a></li>
                <li><a href="">Fotogalerie</a></li>
                <li><a href="">Videogalerie</a></li>
                <li><a href="">Struktura úseku</a></li>
                <li><a href="">Adresař klubů</a></li>
                <li><a href="">Partneři</a></li>
                <li><a href="">Kontakt</a></li>
            </ul>
        </li>
        <li>Ostatní
            <ul>
                <li><a href="">Komise telemarku</a></li>
                <li><a href="">Komise carvingu</a></li>
                <li><a href="">Komise rychlostního lyžování</a></li>
                <li><a href="">Komise hendikepovaných lyžařů</a></li>
                <li><a href="">Komise masters</a></li>
            </ul>
        </li>
        </ul>
    </div>
</div>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

$('ul#side_menu').find('li').click(function(){
tu je ti to ul zbytočné,keďže adresuješ podľa ID a to môže byť na stránke iba raz, teda je to jedinečné.

Kód: Vybrať všetko

var $rodic = $(this);
var $potomek = $(this).find('ul');

$rodic.find('ul').slideUp();
čiže vlastne $potomek.slideUp() :roll:
TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa TommyHot »

Neviem sice co presne chces docielit, ale ak nechces aby sa anchor tag spraval standardnym sposobom, tak musis pouzit preventDefault() metodu. V opacnom pripade pri kliknuti na anchor ta to presmeruje na url kam anchor odkazuje a event sa nevykona.

http://jsfiddle.net/vMrn6/

// nabuduce davaj kod do jsfiddle, je to prehladnejsie a da sa to rovno testovat
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa fikotek »

No kluci, ja potrebuju aby se pri kliknuti na li otevrelo to ul. A pokud kliknu na jine li potrebuju aby se to ul zavrelo a otevrelo se to dalsi ul. Cili je to takovy Akordeon slide menu.

//A vlastne kdyz se na to ted divam tak to amm uplne blbe :( Saaakra :/
TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Tomiiikova poradna JQuery (ovsem radi se Tomiiikovi)

Príspevok od používateľa TommyHot »

http://jsfiddle.net/vMrn6/1/

// edit

Neviem nakolko je bezpecne pouzivat event.target.nodeName kvoli inym browserom, ale ked uz si html navrhol tak ako si navrhol, tak potrebujes v ramci eventu este rozlisovat, ci si v skutocnosti klikal na LI, alebo na A.

http://jsfiddle.net/vMrn6/2/
Napísať odpoveď