0
votes

JavaScript cliquez sur LI par d'autres paramètres que la classe / ID

J'ai un

  • code> avec de nombreux attributs, l'un d'entre eux est l'ID de données. Comment puis-je cliquer sur le li code> qui possède un identifiant de données spécifique? (Par exemple, Data-ID = "4052").

    Je peux obtenir l'attribut, mais je ne peux pas simuler le clic là-bas. p>

    L'exemple de HTML est: P>

    <li tabindex="0" role="checkbox" aria-label="description of image" aria-checked="false" data-id="4000" class="attachment save-ready">
    

  • 8 commentaires

    Vous pouvez utiliser le [data-id = "4000"] sélecteur de requête pour obtenir l'élément à l'aide de document.Quiseryselector


    Dans le gestionnaire de clic normal, vous pouvez également mettre une vérification conditionnelle pour la valeur de cette attribut de données. Si ce n'est pas égal à 4052, retournez sinon exécutant la logique.


    @shrys, il est censé être utilisé comme ça? document.QuerySelector ( [data-id = "$ {data}"] ). Cliquez sur (); . Je l'ai utilisé et j'ai une erreur. Les données sont le VaR qui ont l'ID.


    Quelle est l'erreur? Un violon qui fonctionne jsfiddle.net/shrys/v0xxtn5fa


    Je reçois "Impossible de lire la propriété" Cliquez sur "NULL". Mais d'autres clics derrière fonctionnent bien. Peut-être que c'est parce que le temps qu'il faut pour d'autres clics qui ne peuvent pas cliquer dessus?


    Cela pourrait signifier que l'élément n'est pas dans le DOM (peut-être que data-id ne correspond pas?), Dans ce cas, vous pouvez vérifier un chèque si vous avez un élément avec . QuerySelector en premier lieu, puis passez avec .Cliquez sur ()


    Oui, je pense qu'il faut trop longtemps et l'élément n'est pas encore dans Dom. Il y a une bonne façon de faire un clic, attendez jusqu'à ce que vous rendantez correctement, faites un autre clic et attendez à nouveau jusqu'à ce que les rendoirs, etc., etc.


    Bien sûr, vous pouvez utiliser la fonction d'événement DOMContExTroduited pour les clics, et si les éléments DOM prennent le temps de charger que vous pourriez peut-être mettre votre Cliquez sur Connexion dans setInterval


    3 Réponses :


    1
    votes

    Vous pouvez implémenter Cliquez sur CODE> Evénement sur l'ID de données et utilisez si la condition sur Vérifiez code> ID spécifique.

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <li tabindex="0" role="checkbox" aria-label="description of image" aria-checked="false" data-id="4000" class="attachment save-ready">AAA


    1 commentaires

    Peut-être que je ne comprends pas bien. Je veux cliquer ici automatiquement en fonction de l'ID de données, de ne pas vous lancer quelque chose lorsque je clique dessus. Merci.



    1
    votes

    Vous pouvez utiliser le sélecteur li [data-id = '4000'] code> pour cibler le li code> avec data-id code> égal à 4000 :

    p>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <li tabindex="0" role="checkbox" aria-label="description of image" aria-checked="false" data-id="4000" class="attachment save-ready">
    Some li content
    </li>
    
    <!-- Different li-->
    <li tabindex="0" role="checkbox" aria-label="description of image" aria-checked="false" data-id="4001" class="attachment save-ready">
    Some other li content
    </li>


    0 commentaires

    0
    votes

    Si vous souhaitez utiliser uniquement JS pour le faire, vous pouvez utiliser Document.QuerySelector ("Li [Data-ID = '300']"). AddeventListener (// Le reste du code)

    ou si vous savez où est le LI


  • 0 commentaires