Autor Zpráva
Manny
Profil *
Ahoj,
řeším výše popsaný problém s jQuery. Mám menu, u kterého pomocí jQuery zobrazuju / skrývám submenu. Zjistil jsem ale, že při použití takového menu nefunguje Slimbox (lightbox).

Přiložím ukázku skriptu:
<link rel="stylesheet" href="slimbox/css/slimbox.css" type="text/css" media="screen">
   <script type="text/javascript" src="slimbox/js/mootools.v1.11.js"></script>
   <script type="text/javascript" src="slimbox/js/slimbox.js"></script>
   
   <script type="text/javascript" src="menu.js"></script>
  <script type="text/javascript">
  $(document).ready(function(){
  	
  	$(".submenu_item2").hide();
  
  	$("div.menu_item2").toggle(function(){
  		$(this).addClass("active"); 
  		}, function () {
  		$(this).removeClass("active");
  	});
  	
  	$("div.menu_item2").click(function(){
  		$(this).next(".submenu_item2").slideToggle("slow,");
  	});
  
  });
  </script>
   
  <style> 
   .submenu_item2 {
    display: none;
   }
  </style>

  <div class="menu_item2">
   <a href="#" style="display: block;">A</a>
  </div>
  
   <div class="submenu_item2">
    <div style="overflow: hidden;">       
     <a href="#">A1</a><br />
     <a href="#">A2</a><br />      
     <a href="#">A3</a>
    </div>
   </div>

    <a href="" rel="lightbox"><img src="beznazvu.png" alt=""></a>


Nevíte prosím čím tento problém může být způsoben??
jso
Profil *
pokud dáš
<script type="text/javascript" src="menu.js"></script>
jako první, půjde lightbox, ale nepůjde menu. Je to tím, že poslední "přepíše" toho předešlého. Tedy začneš najednou používat objekt, který tam není.
Manny
Profil *
aha... no a jak by se to dalo vyřešit? Potřeboval bych na stránce mít aktivní oba tyto prvky
jso
Profil *
Manny
Zkuste implementovat lightbox plugin přímo pro jQuery.

Použití je snadné:
$(function() {
	$('#gallery a').lightBox({fixedNavigation:true});
});

a samozřejmě že je k dispozici si lightbox nastavit dle svého.
Manny
Profil *
jso
jenom tohle, co jste minapsal tam mám vložit? V jQuery teprve začínám
jso
Profil *
Manny
samozřejmě musíte připojit i js s pluginem.

Tedy přidat řádek:
<script type="text/javascript" src="js/jquery.lightbox-0.4.js"></script>

kde js/jquery.lightbox-0.4.js je cesta k souboru js.
Manny
Profil *
jso
hm... bohužel i když implementuji lightbox jako jQuery, tak pořád nejde menu s lightboxem dohromady :/
jso
Profil *
Manny
Myslíš, že by to šlo někde vystavit? Já jsem s tím problém neměl. Samozřejmě
   <script type="text/javascript" src="slimbox/js/mootools.v1.11.js"></script>
   <script type="text/javascript" src="slimbox/js/slimbox.js"></script>
musíš vyhodit
Manny
Profil *
jso
jistě že ten starý slimbox jsem vyhodil...

ale už se m to podařilo rozchodit - já soubor s menu includoval do index.php a ten kód s jQuery menu jsem měl v tom includovaném souboru - když jsem jej dal do indexu, tak už to jede (když jsem ale tohle samé zkoušel s klasickým Lightboxem, tak to nešlo).

No a ještě musím vyřešit problém s zobrazováním obrázků - CLOSE, NEXT... nezobrazují se, i když je cesta správně
jso
Profil *
Manny
CLOSE, NEXT... nezobrazují se, i když je cesta správně
zřejmě není :)
Předpokládám, že máš vložen styl:
<link rel="stylesheet" type="text/css" href="css/jquery.lightbox-0.4.css" media="screen" />

Obrázky jsou v adresáři images, tak jako styl je v css.
Manny
Profil *
právěže ne...
  <script type="text/javascript" src="../menu.js"></script>
  <script type="text/javascript" src="../slimbox2/js/jquery.js"></script>
  <script type="text/javascript" src="../slimbox2/js/jquery.lightbox-0.5.js"></script>
  <link rel="stylesheet" type="text/css" href="../slimbox2/css/jquery.lightbox-0.5.css" media="screen" />



cesta musí být správně, protože funguje JS... ale ten testovací soubor mi funguje (co byl jako example na webu), což je zajímavý..
jso
Profil *
Manny
a v „../slimbox2/images/“ jsou ty obrázky?
Manny
Profil *
jso
ano jsou... už přemýšlím jestli nemám poměnit tu cestu k nim v jquery.lightbox-0.5.js---- ale to je blbost, když ten testovací soubor takhle funguje..
jso
Profil *
Manny
ten testovací funguje, protože od index.html je k obrázkům cesta
imageLoading:			'images/lightbox-ico-loading.gif',		// (string) Path and the name of the loading icon
imageBtnPrev:			'images/lightbox-btn-prev.gif',			// (string) Path and the name of the prev button image
imageBtnNext:			'images/lightbox-btn-next.gif',			// (string) Path and the name of the next button image
imageBtnClose:		'images/lightbox-btn-close.gif',		// (string) Path and the name of the close btn
imageBlank:			'images/lightbox-blank.gif',		        // (string) Path and the name of the close btn

změň ji
Manny
Profil *
jso
děkuji ti moc, funguje:)
hle
jso
Profil *
Manny
nemáš zač. Bylo by dobré, kdyby zůstávala daná položka menu rozbalena.
Manny
Profil *
jso
nad tím právě špekuluju, jak by se to dalo udělat - doposud jsem tu nabídku nechával rozbalenou pomocí PHP - kdy jsem testoval to, co je v GETu a podle toho nechával submenu skryté/rozbalené... ale je to nešikovné takhle
jso
Profil *
Manny
něco podobného jsem teď dělal pro jednu aplikaci v intranetu. Jelikož to celé jede na AJAXu, tak jsem to dělal javascriptem pomocí cookies.
Manny
Profil *
jso
tak se v tom zkouším trochu pohrabat, ale nevím jak tam přesně zakomponvoat tu cookie
$(document).ready(function(){
  	
  	$(".submenu_item2").hide();
  
       $.cookie('remember', '0', { expires: 10 });
  
  	$("div.menu_item2").toggle(function(){
  		$(this).addClass("active"); 
  		}, function () {
  		$(this).removeClass("active");
  	});
  	
  	$("div.menu_item2").click(function(){
  		$(this).next(".submenu_item2").slideToggle("slow,");
  		
  		 
  	});
  
  });


Někde před zpracováním událostí si asi musím vytvořit cookie s nastavenou platností, ale nevím, jak to potom porovnávat a kam to umístit... chtěl jsem to udělat tak, že bych na začátek nastavil remember na 0 jako že je submenu skryto... ale pak nevím co s tím dále
jso
Profil *
Manny
já to dělám tak, že menu je rozbaleno (kdyby náhodou byl js vypnut). Hned za menu volám fci expandViewItems();
Tato fce se stará o rozbalení jednotlivých podmenu z cookie.

V .click pro rozbalení/sbalení podmenu mám fci setMenuCookie($(this).attr('id'));.

      function setMenuCookie(menuItem) {
        cookieName = 'expandMenuItems';
        cookie = getCookie(cookieName);
        
        //pokud je položka v cookie, odstraním ji, jinak ji přidám
        if (cookie.search(menuItem)>-1) {
          if (cookie.length > menuItem.length) {
            cookie = (cookie.indexOf(menuItem)==0) ? cookie.replace(menuItem + ";","") : cookie.replace(";" + menuItem,"");
          } else {
            cookie = "";                    
          }
        } else {
          if (cookie.length == 0) {
            cookie = menuItem;
          } else {
            cookie = cookie + ";" + menuItem
          }
        }
        setCookiePath(cookieName,cookie,0,"/")
      }


Z toho plyne, že každé submenu má jednoznačný identifikátor. Ten ukládám do cookie (jednotlivé rozbalené položky jsou odděleny ;). V expandViewItems(); pak získám danou cookie, udělám z toho pole a cyklem je projdu a rozbalím.
Manny
Profil *
jso
zkusím to udělat nějak podobně

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0