CJ největší affiliate síť v ČR, 40+ inzerentů CPC,CPL,CPO model. Začni vydělávat teď
Zobrazují se odpovědi 1 až 5 z 5

JQuery menu

  1. Zdravím,
    potreboval by som menšiu výpomoc... robím JQuery menu, všetko fachčí ako má, až na lightbox (lavalamp)... proste prejde to nad daný element zoznamu (<li>), ale najprv skočí na prvý element a potom hneď nad daný... a nad prvý by malo len ak neni ani nad jedným z elementov myš...

    kód
    Kód:
    $(function(){
    	$("li").mouseenter(function(){
        var pos = $(this).position().left-(($(window).width()-$("#menu").width())/2-5);
        var mar = new String($(this).css("marginLeft"));
        var marg = mar.replace("px","");
        var wd = $(this).width()+marg*2;
        $("#light").stop(true,true);
        $("#light").animate({marginLeft:pos,width:wd},"medium");
        $(this).find("div").css("visibility","visible");
        $(this).find("div").stop(true,true);
        $(this).find("div").slideDown("slow");
      }).mouseleave(function(){
        var pos = $("li:first").position().left-(($(window).width()-$("#menu").width())/2-5);
        var mar = new String($("li:first").css("marginLeft"));
        var marg = mar.replace("px","");
        var wd = $("li:first").width()+marg*2;
        $("#light").stop(true,true);
        $("#light").animate({marginLeft:pos,width:wd},"medium");
        $(this).find("div").stop(true,true);
        $(this).find("div").slideUp("slow",function(){
          $(this).find("div").css("visibility","hidden");
        });
      });
    });
    ale nejde to ani s podmienkou pre mouseover
    Kód:
    $(function(){
    	$("li").mouseenter(function(){
        // mouse in
      }).mouseleave(function(){
        if(!($("li").mouseover())){
          var pos = $("li:first").position().left-(($(window).width()-$("#menu").width())/2-5);
          var mar = new String($("li:first").css("marginLeft"));
          var marg = mar.replace("px","");
          var wd = $("li:first").width()+marg*2;
          $("#light").stop(true,true);
          $("#light").animate({marginLeft:pos,width:wd},"medium");
          $(this).find("div").stop(true,true);
          $(this).find("div").slideUp("slow",function(){
            $(this).find("div").css("visibility","hidden");
          });
        }
      });
    });
    a je jedno či if(!($("li").mouseover())) alebo if(!($("li:hover"))), efekt ten istý... a s podmienkou dokonca nefunguje ani slideUp().. ak sa dakto z vás v tom vyzná lepšie ako ja, alebo vám chyba až bije do očí, prosím pomôžte

    demo nájdete TU

  2. Happy Robot :]

    Co se právě děje na Webtrhu?

  3. a je jedno či if(!($("li").mouseover())) alebo if(!($("li:hover"))), efekt ten istý... a s podmienkou dokonca nefunguje ani slideUp().. ak sa dakto z vás v tom vyzná lepšie ako ja, alebo vám chyba až bije do očí, prosím pomôžte
    No ta chyba opravdu bije do očí ;-) Funkce mouseover() totiž nevrací logickou hodnotu podle toho, jestli je kurzor v oblasti prvku. Aby bylo možné funkce zřetězovat, tak vrací vybraný prvek, takže

    Kód:
    if(!($("li").mouseover()))
    je to samé, jako

    Kód:
    if(!($("li")))
    což bude vždycky false. Pomocí funkce mouseover se dá navěsit handler předaný parametrem, který se provede pokaždé, když se na daném prvku vyvolá událost mouseover.

  4. RE: 800XE
    Aha, takže už viem prečo to nejde, díky... ale ešte stále nemám ani potuchy, ako potom zistiť, či nad dajakým "<li>" v tom menu je kurzor... proste preto to skočí naspäť, lebo to tam má dané a mouseout sa vykoná aj vtedy ak myš prešla nad iný "<li>"... vedel by si mi pomôcť prosím? =) (vlastne že ako zistiť, či je nad daným elementom kurzor... hľadal som v Google, ale nefunguje)

  5. No ten kód je docela divokej, ale to určitě časem vypiluješ. V CSS u #menu li místo margin: 2px 22px; nastav padding: 2px 22px; a ten kód by pak mohl vypadat nějak takhle:

    Kód:
    $(function(){
        $('#menu')
            .delegate('li', 'mouseenter', function() {
                var $li = $(this);
                $('#light')
                    .stop()
                    .animate({
                        marginLeft: $li.position().left,
                        width: $li.outerWidth()
                    }, 'medium');
            })
            .mouseleave(function() {
                $('li:first', this).trigger('mouseenter');
            });
    });

  6. btw - práve som našiel vo Videocast: Vianočný jQuery Steam-ish Slider na zajtra.sk možnosť kontroly či je daný element animovaný
    Kód:
    if (element.is(":animated"))
    Keďže ste mi pomohli vy, tak dávam sem TIP aj ja ;)
    Naposledy upravil DOBss : 28.12.2011 v 17:44

Podobná témata

  1. jquery menu
    By Ivorius in forum Javascript
    Odpovědí: 3
    Poslední příspěvek: 19.09.2008, 13:18
Hostujeme u Server powered by TELE3