No se puede limitar “falso retorno” a elemento padre solamente; quieren que los niños vuelvan realidad!

StackOverflow https://stackoverflow.com/questions/2543321

  •  23-09-2019
  •  | 
  •  

Pregunta

Esta es mi primera vez aquí, así que espero que no salen demasiado estúpidos!

tengo un problema muy simple jQuery: Tengo una navegación basada en la base de datos ul-generado y quiero elementos de la lista que contienen otras listas para alternar la presentación de las listas de contenidos. Las listas (generadas) se ven así (código de Wordpress; ignorar los japoneses):

<div class="block first">
<ul class="counts">
    <li class="cat-item cat-item-43">
        <a href="http://localhost/crg/?cat=43" title="View all posts filed under その他制作物">その他制作物</a>
    </li>
    <li class="cat-item cat-item-3">
        <a href="http://localhost/crg/?cat=3" title="View all posts filed under クライアント">クライアント</a>
        <ul class='children'>
            <li class="cat-item cat-item-4">
                <a href="http://localhost/crg/?cat=4" title="View all posts filed under マイクロソフト">マイクロソフト</a>
            </li>
            <li class="cat-item cat-item-9">
                <a href="http://localhost/crg/?cat=9" title="View all posts filed under 夢">夢</a>
            </li>
            <li class="cat-item cat-item-8">
                <a href="http://localhost/crg/?cat=8" title="View all posts filed under 生">生</a>
            </li>
        </ul>
    </li>
</ul>

Y aquí está el jQuery escribí a: En primer lugar, se esconden en el interior li.cat-elemento de todas las ul.children de; En segundo lugar, se aplica una función de activación y un falso retorno a sólo aquellos del ítem-li.cat que tienen ul.children, dejando los enlaces dentro de su función por defecto.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children)").click(function(){
        $(this).find('ul.children').toggle();
        return false;
    });
});

El problema es, el "falso retorno" se está aplicado a todo el interior del contenedor de Li y nada que hago parece excluir de la selección. Alguien sabe lo que estoy haciendo mal?

Gracias de antemano

¿Fue útil?

Solución

lo hizo.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children) > a").click(function(){
        $(this).siblings('ul.children').toggle();
        return false;
    });
});

que tenía que dirigirse a la "una" etiqueta dentro de la li, no el propio Li.

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