2009-08-24 11 views
0

J'utilise le code suivant pour trouver une table particulière, cacher montrer ensuite sur un clic:Jquery SI peut-être?

$(function() { 
    $('.Nav table .navitem').hide(); 
    $('.Nav table.navheader').click(function() { 
    $(this).parent().parent().next().find(".navitem").slideToggle('100'); 
    }); 
}); 

Voici la sortie HTML:

<div class="Nav"> 

<table cellpadding="0" cellspacing="0" border="0"> 
    <tr> 
    <td> 
     <table class="navheader" cellpadding="0" cellspacing="0" border="0" width="100%"> 
     <tr> 
     <td style="width:100%;"><a navheader" href="#">Header</a></td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <table border="0" cellpadding="0" cellspacing="0" width="100%" class="navSubMenu"> 
     <tr> 
     <td> 
     <table class="ms-navitem" cellpadding="0" cellspacing="0" border="0" width="100%"> 
      <tr> 
      <td style="width:100%;"><a class=" ms-navitem" href="#" style="border-style:none;font-size:1em;">Item</a></td> 
      </tr> 
     </table> 
     </td> 
     </tr> 
     </table> 

Une navigation accordéon de base piraté ensemble d'une table , cependant certains des .havheader n'ont pas .navitem donc je ne veux pas que ceux-ci soient cliquables.

Comment puis-je y parvenir?

+0

Comme une note de côté , 3 niveaux d'imbrication de la table juste pour créer des liens de navigation semble être exagéré. Vous devriez être capable de créer le même effet en utilisant une liste non ordonnée (UL). – scunliffe

+0

Je suis d'accord, sauf que le HTML est «pré-généré» et l'édition qui ouvre une toute nouvelle boîte de Pandore. Je dois travailler avec ce que j'ai. – CLiown

+0

Est-ce que table class = "ms-navitem" est supposé être "navitem". Et est-ce censé être MrHus

Répondre

2

Modifier ce sélecteur:

$('.Nav table.navheader') 

à ceci:

$('.Nav table.navheader:has(.navitem)') 
+0

J'ai changé mon message pour afficher HTML out mis que votre suggestion ne fonctionne pas, mais semble venir très près. – CLiown

+0

Cela ne fonctionne pas car .navitem est en dehors de .navheader, de sorte que table.navheader ne possède pas d'élément .navitem. .navitem est une table à l'extérieur. – CLiown

0

Si vous voulez juste accordéon, peut-être il est préférable d'utiliser à la place jQuery UI ...

+0

Je voudrais si cela était possible mais le HTML ne peut pas être modifié, voir les commentaires ci-dessus dans le message original. – CLiown

Questions connexes