0
votes

Comment cibler un élément imbriqué dans un élément de liste lorsque l'élément de la liste précédente est cliqué avec jQuery / javascript?

J'ai une liste non ordonnée comme ceci: xxx

ce dont j'ai besoin, c'est de modifier la couleur de la bordure gauche de l'ID "trois" si ID "deux 'est cliqué. Je sais que je peux faire quelque chose comme ceci: xxx

et ainsi de suite pour chacun, mais la jQuery devient très longue lorsque j'ai une longue liste d'éléments de liste. Y a-t-il une façon plus concise de faire cela? Tout ce que j'ai vu en ligne est pour les sélecteurs de frère de soeur, mais depuis que chaque n'est pas un frère de frère de l'autre, je n'arrive pas à comprendre comment la cibler.

J'ai également besoin d'avoir le à l'intérieur du

  • pour des raisons d'accessibilité / tabulation.

    Merci pour votre aide!


  • 6 commentaires

    Que se passera-t-il si vous cliquez sur ID un ou trois?


    Quelle est la logique sous-jacente de changer la bordure gauche de l'ID "trois" lorsque "deux" est cliqué?


    @brk Si vous cliquez sur ID une, le bord gauche de l'identifiant doit changer de couleur.


    @ jo8691 C'est une spécification de conception que le client a demandé. Ils veulent un menu de navigation fou.


    @ Jthunter24 sa non claire, la bordure gauche de l'ID devrait changer de couleur. Vous vouliez dire à la gauche bordure de l'identifiant suivant?


    @brk il dit bordure gauche de l'ID 3 mais oui j'ai besoin de la bordure gauche de l'identifiant suivant pour changer de couleur


    3 Réponses :


    0
    votes

    Vous pouvez utiliser la méthode JQuery suivante () ( https: // API .jQuery.com / Suivant / ) En combinaison avec le parent () ( https://apl.jquery.com/parent/ ) méthode

    $ (e.target) .parent (). Suivant ()


    3 commentaires

    Cela n'a pas semblé travailler pour moi. Je voulais tellement ça!


    Vous devrez peut-être utiliser le plus proche ('li') au lieu de parent () ici. Il est possible que l'élément

  • reçoit l'événement de clic au lieu de la balise .


    Peut-être que c'est le '$ (ceci)' que vous passez l'élément sous forme de paramètre dans la fonction, essayez le code modifié.



  • 3
    votes

    Vous pouvez utiliser suivant () code> comme ceci. Il reçoit le prochain frère de frère de l'élément sélectionné.

    https://apl.jquerery.com/next/ p>

    EDIT: Si vous souhaitez que le a code> Pour avoir la classe code> gauche code>, vous pouvez utiliser le plus proche code>, suivant code> et Rechercher code> pour cibler le prochain A code>. p>

    le plus proche code> Obtenez-moi le premier élément correspondant au li code > cliqué. Suivant code> Le li code> qui est juste suivant, puis trouver code> pour obtenir l'élément a code> à l'intérieur du li .

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <ul>
       <li><a class="foo" id="one">some text</a></li>
       <li><a class="foo" id="two">some text</a></li>
       <li><a class="foo" id="three">some text</a></li>
    </ul>



    0
    votes

    AS OP autorisé pour PURE JavaScript à utiliser, voici ici A travaillant (si long de) JS SNIPPET:

    .leftBorder {
      border-left : 2px solid red;
    }
    


    0 commentaires