Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Rozwijane menu.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kajzur
Cześć! Chciałbym funkcją .show() i .hide() zbudować takie menu. I ono mi się rozwija i zwija zaraz po zjechaniu z przycisku który jest inicjatorem wyjechania diva. Sposób w jaki to działa - rozumiem i wiem że kod poniżej właśnie tak ma działać jak napisałem - problem w tym że nie wiem jak napisać go by menu się zwijało po zjechaniu z obszaru rozwiniętego diva a nie od razu na tym obszarze:
  1. <li>
  2. <a onmouseover="j('#ff').show('fast');" onmouseout="j('#ff').hide('fast');" href="java script:void(0);" >Więcej</a></li>
  3. <div style="display:none;position:absolute;top:35px; width:270px;background-color:#49324C;
  4. color:#fff;
  5. text-shadow:1px 1px 2px #A0457E;
  6. text-decoration:none;padding:6px 20px;" id="ff">
  7.  
  8. <a style="font-size:14px;" href="#">JA</a><br>
  9.  
  10. </div>

konole
A nie łatwiej będzie poprzez CSS?
paawian
1. Dzisiaj nie używa się już eventów przypisanych w znacznikach typu onmouseover czy onclick.

Zrób to w następujący sposób:

Stwórz sobie plik functions.js i wpisz do niego:

  1.  
  2. $(".submenu").mouseover(function(e)
  3. {
  4. var id = '#submenu_' + event.target.id;
  5.  
  6. e.preventDefault();
  7. $(id).slideToggle("slow");
  8.  
  9.  
  10. });


gdzie .submenu musisz przypisać jako class do linku.
jako id linku daj np: games, albo cokolwiek czego dotyczy to menu,

potem robisz div o display:none , który będzie miał id submenu_games

jak to działa? tłumaczę:
po najechaniu myszą na link o klasie .submenu wykonywana jest instrukcja var id = '#submenu_' + event.target.id; , teraz JavaScript wie, na który link najechałeś myszą i konstruuje sobie id DIV'a, który ma rozwinąć, a następnie po prostu to robi.. żeby po zjechaniu z tego DIV'a funkcja go zwijała wystarczy, że zdublujesz tą funkcję i zmienisz tylko mouseover na mouseout, .submenu na id div'a, i z pierwszej instruckji usuniesz event.target.id, a wpiszesz pełne id div'a

NIE ZAPOMNIJ DOŁĄCZYĆ DO NAGŁÓWKA PLIKÓW jquery i functions.js
kajzur
Nie działa, mógłbyś pomóc?
Plik fun.js:
Kod
j(".submenu").mouseover(function(e)
{
    var id = '#submenu_' + event.target.id;

    e.preventDefault();
    j(id).slideToggle("slow");


});


Plik index.php, nagłówek:
Kod
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script>

<script type="text/javascript">

  var j = jQuery.noConflict();

</script>
<script type="text/javascript" src="http://xx.info/js/fun.js"></script>


Scieżka do fun.js - poprawna.

HTML:
Kod
<a class="submenu" id="wiecej" href="java script:void(0);" >Więcej</a></li>
                        <div style="display:none;position:absolute;top:35px; width:270px;background-color:#49324C;    
    color:#fff;
    text-shadow:1px 1px 2px #A0457E;
    text-decoration:none;padding:6px 20px;" id="submenu_wiecej">
    
    <a style="font-size:14px;" href="#">JA</a><br>
    </div>

I niestety nic sie nie dzieje..
paawian
kurcze, przepraszam ze tak pozno,
sam nie jestem mistrzem i nie widze tu bledu, sprobuj przypisac id div'a w funkcji na sztywno, tzn j('#submenu_wiecej')

dobra, sprawdzilem, event.target.id odwoluje sie do id ale tylko w Chrome..
polecam takie odwołanie: var id = "#submenu_" + jQuery(this).attr("id");
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.