Autor Zpráva
Daviart
Profil
Snažím se pomocí Jquery změnit obsah ve span class="popis", asi nejlépe schováním/zobrazením jiného spanu. Výměna zobrazení by se měla projevit po najetí kurzorem na odkaz.

<span class="popis">
  <span class="text zobrazit" id="ma1">text1</span>
  <span class="text schovat" id="ma2">text2</span>
  <span class="text schovat" id="ma3">text3</span>
</span>
             
<ul>
  <li><a rel="ma1" class="ma">link1</a></li>
  <li><a rel="ma2" class="ma">link2</a></li>
  <li><a rel="ma3" class="ma">link3</a></li>
</ul>

css
.zobrazit { display:block }
.schovat { display:none } 

Jquery
$(document).ready(function(){
  $('.ma').mouseenter( 
    function() { 
      var maID = (this).attr("rel");
      $(maID).css("display","block");
      $('.text .zobrazit').css("display","none");
    }
  );
);
Martin02
Profil
Daviart:
V tom jQuery máš chyby...
$(document).ready(function(){
  $('.ma').mouseover(  // mouseenter neznám, ale možná to také funguje
    function() { 
      var maID = $(this).attr("rel"); // před (this) musíš mít dolar - $
      $("#" + maID).css("display","block"); // hodnota maID je třeba "ma1", takže před to musíš dát #, aby se vědělo, že je to atribut id
      $('.text.zobrazit').css("display","none"); // mezi tím .text a .zobrazit bych mezeru nedělal, jelikož je to jeden prvek (mezera značí, že to druhé je v tom prvním)
    }
  );
);

A zadruhé když sis tam tak pěkně vytvořil pomocí CSS třídy pro zobrazování/nezobrazování, tak bych v jQuery udělal jen změnu tříd:
$("#" + maID).removeClass("schovat").addClass("zobrazit"); // vymažu mu třídu schovat a přiřadím třídu zobrazit
$('.text.zobrazit').removeClass("zobrazit").addClass("schovat"); // vymažu mu třídu zobrazit a přiřadím třídu schovat

A ještě dodat podmínku, aby to fungovalo jen když kliknu na odkaz, který odkazuje na skrytý span:
var maID = $(this).attr("rel");
if(!$("#" + maID).hasClass("zobrazit")) { // jestliže span, na který odkazuje to, na co jsem najel nemá třídu zobrazit, prověď další kód...
...
Chamurappi
Profil
Reaguji na Martina02:
tak bych v jQuery udělal jen změnu tříd
Ale v opačném pořadí.


Reaguji na Daviarta:
<a rel="ma3"
Jak vyjadřuje ma3 vztah mezi stávající stránkou a tou, na kterou odkaz odkazuje? Proč používáš standardní atribut rel na uskladnění nějakého nesmyslu? Proč vůbec používáš odkaz, když nemá href?

Já bych to napsal bez jQuery a takhle:
<span id="popis">
  <span class="text" id="ma1">text1</span>
  <span class="text" id="ma2">text2</span>
  <span class="text" id="ma3">text3</span>
</span>
             
<ul onmouseover="document.getElementById('popis').className = (event.target || event.srcElement).className;">
  <li><a class="ma1" class="ma">link1</a></li>
  <li><a class="ma2" class="ma">link2</a></li>
  <li><a class="ma3" class="ma">link3</a></li>
</ul>
… a zbytek, co se má/nemá jak zobrazit, bych vyřešil v CSS.
Daviart
Profil
Moc díky, funguje. S Javou nemám skoro žádné zkušenosti takže syntaxi nikdy nevím jak přesně deklarovat.
Ty „a“ mají odkazy a další atributy, jsou skládány pomoci php, vyňal jsem jen ukázku.
Chamurappi
Profil
Reaguji na Daviarta:
S Javou nemám skoro žádné zkušenosti
JavaScript není Java.

Ty ‚a‘ mají odkazy a další atributy
Zneužíváš rel k jinému účelu, než by měl být. Pokud si potřebuješ skladovat vlastní data v nějakém atributu, vymysli si nějaký vlastní.

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: