J'essaie de capturer la valeur de l'attribut ID du 3e parent vers le haut lorsqu'un lien est cliqué. Exemple:

<div id="First Div">
  <div class="class A">
    <div class="class B"></div>
    <div class="class C"></div>
    <div class="class D">
        <i class="link A">Clickable Element</i>
    </div>   
  </div>
</div>  

J'ai besoin de stocker la valeur "First Div" dans une variable lorsque "Clickable Element" est cliqué.

2
frankbraga 8 mars 2016 à 00:05

3 réponses

Meilleure réponse

Tout d'abord, le id ne doit pas contenir d'espaces, ajoutez un trait de soulignement à la place.

Vous pouvez attacher un événement de clic à la classe link et cliquer sur aller au parent qui a un attribut id et l'enregistrer dans la variable:

$('.link').on('click', function(){
    var id_attribute=$(this).closest('div[id]').prop('id');
})

J'espère que cela t'aides.


$('.link').on('click', function(){
    var id_attribute=$(this).closest('div[id]').prop('id');
    
    alert(id_attribute);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="First_Div">
  <div class="class A">
    <div class="class B"></div>
    <div class="class C"></div>
    <div class="class D">
        <i class="link A">Clickable Element</i>
    </div>   
  </div>
</div>
1
Zakaria Acharki 7 mars 2016 à 21:22

Vous pouvez utiliser la méthode jquery parents () qui parcourra le DOM jusqu'à ce qu'il trouve une correspondance.

$(this).parents().find('div#First_div').attr('id');

http://api.jquery.com/parents/

0
Cruiser 7 mars 2016 à 21:15

Vous pouvez le faire en utilisant:

$(this).parent().parent().parent().attr("id");

Mais ce n'est pas une bonne solution, car vous devez vous assurer que ces parents existent réellement.

0
jdabrowski 7 mars 2016 à 21:07