Paweł Kossowski

Paweł Kossowski specjalista ds.
Sprzedaży, EkoGips

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

POMÓŻCIE PROSZE już nie mam siły.
Męczę sie z pluginem rozwijanego menu . Plugin pobrałem ze stronki http://devplugin.pl/pluginy/plugin-menu-rozwijane-pros... i mam z nim problem.
Co zrobić by przy przejściu na jedną z podstron MENU zostawała rozwinięta.
Tzn: Przy ładowaniu strony rozwijać się będzie odpowiednią zakładkę w menu.

i jeszcze jedno: czemu jak umieszczam w link w głównych zakładkach do nie przenosi mnie do strony tylko rozwija.
Zrobiłem menu :
 <div class="menu">
<ul>
<li id="onas"><a href="o_nas.html">O nas</a>
<ul>
<li><a href="o_nas.html">Pizza Seven</a></li>
<li><a href="strefa.html">Strefa dowozu</a></li>

</ul>
</li>
<li ><a href="menu.html" >Menu</a>
<ul>
<li><a href="pizzas.html">Pizza</a></li>
<li><a href="makarony.html" >Makarony</a></li>
<li><a href="kawa.html" >Kawa i napoje</a></li>
</ul>
</li>
<li><a href="kontakt.html">Kontakt</a>

</li>
</ul>
</div>

------------------------------------------------------------------------------------------------------
plik ze skryptem menu_Develop.js wygląda następująco:
(function($){
$.fn.menu = function(ustawienia){
//Dekleracja zmiennych globalnych
var el, rozwLinkAkt;
ustawienia = jQuery.extend({
szybkosc : 220,
autostart : 0
},ustawienia);
el = $(this);
el.children("ul").parent("li").children("a").addClass("aktywzakladka");
el.children("ul").addClass("aktywpodzakladka");
rozwLinkAkt = el.children("a.aktywzakladka");

rozwLinkAkt.css({
"background": "url("+ustawienia.off+") top right no-repeat"
});



if(ustawienia.autostart) {
$(".aktywpodzakladka").first().slideDown(ustawienia.szybkosc*1.4, function () {
$(this).removeAttr("class");
$(this).attr("class", "naktywpodzakladka");
rozwLinkAkt.first().css({
"background": "url("+ustawienia.on+") top right no-repeat"
});
});
}
//Klik w zakładkę
rozwLinkAkt.click(function () {
var klik = $(this);
//Zwijanie pozostałych
rozwLinkAkt.parent("li").children("ul").slideUp(ustawienia.szybkosc/1.2, function(){
$(this).removeAttr("class");
$(this).attr("class", "aktywpodzakladka");
rozwLinkAkt.css({
"background": "url("+ustawienia.off+") top right no-repeat"
});
});

klik.removeAttr("class");
klik.attr("class", "naktywzakladka");
klik.parent("li").children("ul.aktywpodzakladka").slideDown(ustawienia.szybkosc, function () {
$(this).removeAttr("class");
$(this).attr("class", "naktywpodzakladka");
klik.css({
"background": "url("+ustawienia.on+") top right no-repeat"
});
});

return false;
});
}
})(jQuery);

------------------------------------------------
nasze-skrypty.js
$(document).ready(function (){
$(".menu ul li").menu();
});

konto usunięte

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

1. skoro przechodzisz na inną podstronę to twój skrypt o tym nie wie i ładuje się od nowa, dlatego po załadowaniu strony od nowa wraca do pierwotnego stanu

jeżeli robisz zwykłą statyczną stronę w html, to chamską ale naj poostrzą metodę jest dopisanie :> do strony w sposób liniowy
display: block;

chodzi o ten miejsce
.menu ul li ul 


2. jak by ten link w głównej zakładce był aktywny "klikalny" to by przerywało działanie skryptu i ładowało innę stronę i dupa anie rozwinięcie by było, jeżeli chcesz się empirycznie przekonać to usuń na chwilę
z kodu js
return false;
Paweł Kossowski

Paweł Kossowski specjalista ds.
Sprzedaży, EkoGips

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

Michał Szaniewski:
1. skoro przechodzisz na inną podstronę to twój skrypt o tym nie wie i ładuje się od nowa, dlatego po załadowaniu strony od nowa wraca do pierwotnego stanu

jeżeli robisz zwykłą statyczną stronę w html, to chamską ale naj poostrzą metodę jest dopisanie :> do strony w sposób liniowy
display: block;

chodzi o ten miejsce
.menu ul li ul 


2. jak by ten link w głównej zakładce był aktywny "klikalny" to by przerywało działanie skryptu i ładowało innę stronę i dupa anie rozwinięcie by było, jeżeli chcesz się empirycznie przekonać to usuń na chwilę
z kodu js
return false;

a może trochę jaśniej? ma ktoś może jakiś inny pomysł

konto usunięte

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

To może ja ci zadam pytanie czy wiesz co to jest display: block; ? I czy wiesz co to jest selektor ?
Paweł Kossowski

Paweł Kossowski specjalista ds.
Sprzedaży, EkoGips

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

Teoretycznie wiem:
selektor { display: block }

block - element będzie wyświetlony w bloku (odstęp z góry i z dołu)


tylko do czego go użyć?

konto usunięte

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

http://devplugin.pl/materialy/Menu/

Ten skrypt co go masz. Działa tak że po kliknięciu w "Zakładka" nadaję przy pomocy JS. Liście "Podzakładka"
display: block;

i wtedy lista się rozwija a gdy klikniesz w inny element to nadaje tej liście(już rozwiniętej)
display: none;


Aby wyselekcjonować tę listę css-je do tego skryptu jest użyty
.menu ul li ul


Po załadowaniu strony wszystkie elementy maję ustawione
display: none;


I teraz jeżeli załóżmy jesteś na stronie index.html i przechodzisz do strony "Podzakładka 1"(nazwijmy tą stronę kontakt.html) w kategorii "Zakładka 1".

To skoro już wiemy że po załadowaniu strony skrypt automatycznie ustawia nam listę
display: none;

Zatem menu będzie zwinięte. Aby temu zaradzić najprościej lekko po chamsku jest ustawić to nadać na stronie kontakt.html
.menu ul li ul

styl
display: none;

jako że arkusz css w tym skrypcie jest ograniczony http://devplugin.pl/materialy/Menu/styl.css
i niema zróżnicowanych selektorów zatem.

Lekka dygresja są trzy metody pisania css
1. w oddzielnym pliku css
2. w tym samym dokumencie html w znaczniku style
3. liniowo bezpośrednio w danym tagu html

I teraz wystarczy aby na stronie kontakt dopisać liniowo display: block;

<div class="menu">
<ul>
<li><a href="#" class="naktywzakladka">Zakładka 1</a>
<ul style="display: block; " class="naktywpodzakladka">
<li><a href="#">Podzakładka 1</a></li>
<li><a href="#">Podzakładka 2</a></li>
<li><a href="#">Podzakładka 3</a></li>
<li><a href="#">Podzakładka 4</a></li>
<li><a href="#">Podzakładka 5</a></li>
<li><a href="#">Podzakładka 6</a></li>
<li><a href="#">Podzakładka 7</a></li>
<li><a href="#">Podzakładka 8</a></li>
</ul>
[...] </ul>
</div>

i analogicznie to na innych stronach zrobić

A drugi twój problem, polega na tym że jeżeli klikniesz w link to cię przeniesie na inną stronę, to chyba logiczne na tym polega html.

I jak by główny kategorii linkował to byś przechodził na inną stronę a nie wykonywał skrypt na tej. Dlatego w pliku js jest funkcja click()która rozwija menu, ale aby nie przechodzić do inną stronę pod koniec funkcji click() napisano
[code]return false[code]
Zapobiega to przejścia na inną stronę, jeżeli tego nie chcesz to wykazuj z kodu js
[code]return false[code]

ale skrypt wtedy nie za działa

Chyba prościej się nie da

konto usunięte

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

Post na GL ma ograniczenia, dlatego mi urwało ostatnie zdanie.


return false;


zatem jeżeli chcesz możesz usunąć z pliku js ten kod:

return false;


ale wtedy ci skrypt nie będzie działał

Chyba prościej się nie da
Paweł Kossowski

Paweł Kossowski specjalista ds.
Sprzedaży, EkoGips

Temat: POMOCY jestem początkujący i męczę się z rozwijanym menu...

Michał, dobry z ciebie facet. nastukałeś się w klawiaturę, za co jestem stokrotnie wdzięczny.

Dzięki Tobie zrozumiałem i co najważniejsze nauczyłem się czegoś.
na innym forum ktoś mi polecił wstawić taką funkcje

$(".menu a").each(function () {
if (this.href === document.URL) {
$(this).closest("ul").siblings("a").click();
return false;
}
});


ale Twoje rozwiązanie działa lepiej. Te rozwiązanie z funkcją rozwija mi zwinięte wcześniej menu. Co nie za fajnie wygląda.

Dzięki wielkie
Paweł

Następna dyskusja:

[szukam skryptu] zanikanie ...




Wyślij zaproszenie do