Pregunta

editar: ok, la línea:

$( <?php echo("'#".$_GET['item']."'")  ?> ).parent().show();

Es obviamente e intente mantener el menú abierto en el lugar correcto. No creo que esto haya funcionado (odio trabajar en otro código ppls).

Entonces mi problema actual es cómo acceder al <ul class="myul"> directamente encima del <li id="001" > usando ese elemento id = 001 ??

Hola

Estoy tratando de arreglar un código que me dejó un programador ahora perdido. Funciona pero falta una característica; No permanezco abierto en el lugar correcto cuando se selecciona un elemento de menú.

Jquery:

$.swapImage(".swapImage");                                  
            $( <?php echo("'#".$_GET['item']."'")  ?> ).parent().show();
            $('.myul').hide();              
            $('.slide_ul li:not(:first-child)').hide();     
            $('.hideMe').click(function(){ 
                $(this).next('ul').slideToggle('fast').siblings('ul:visible').slideUp('fast');
            });                             
            $('.myul a').click(function(e){
                var url = $(this).attr('href');
                var index = url.indexOf('=');
                var substr = url.slice(index+1);                    
                $('#productContainer >div').hide();
                $('#productContainer').load("products/"+substr+"/product.html", function(){
                    $(this).fadeIn('slow'); 
                    var i = 0;
                    $('.slide_ul li:not(:first-child)').hide();                                                                             
                });                 
            });

HTML:

    <!-- Right Navigation -->
                        <div id="rightNav">
                            <div id="navMenu">
                                <h2 id="navMenuheader">Catalogue</h1>
                                <h3 class="hideMe">Widgets</h3>
                                <ul class="myul">
                                    <h4 class="hideMe">Widget Coins</h2>
                                    <ul class="myul">
                                        <li id="001" >
                                             <a href="products.php?item=001">The South African Widget</a>
                                          </li>

El resultado del clic del menú es inyectar Contenido en un div negro en el medio de la página. ¿$(document).ready(function(){ sucede cada vez que esto ocurre? De lo contrario, no puedo ver por qué se actualizan todas las posiciones del menú.

Creo que necesito más código para identificar el lugar en el menú en el que estamos y dejarlos abiertos. Hay hormigas en mi escritorio.

¿Fue útil?

Solución 2

Solo tuve que agregar un poco de jquery para volver a abrir la sección relevante del menú después de que todo se haya ocultado. Entonces, justo después de la línea $('.myul').hide() vuelvo a abrir la sección del menú en función de la consulta de URL (products.php? Item = 001):

var item =  <?php echo("'".$_GET['item']."'")  ?>;

                if (item != '')             
                {
                    item = "li#" + item;            
                    $(item).parent().show();
                    $(item).parent().parent().show();
                }

Otros consejos

me parece la etiqueta de cierre incorrecta en

<h4 class="hideMe">Widget Coins</h2>

es su principal problema, cuando se hace clic en él

$(this).next('ul')

no puede encontrar un ul porque es un niño en lugar de un hermano del h4
cambiándolo a

<h4 class="hideMe">Widget Coins</h4>

hace que funcione mejor, no estoy seguro de si eso era todo lo que estaba buscando

$( <?php echo("'ul:has(#".$_GET['item'].")'");  ?> ).show();

abrirá cada ul que tenga un descendiente con la identificación especificada
simplemente usando .parent () no estaba obteniendo la ul superior para mostrar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top