Sélectionnez l'élément le plus proche
J'ai le code html suivant :
<table id="objects">
<tr>
<td>
<input type="text" value="2" />
</td>
<td>
<a href="#" class="delete">link</a>
</td>
</tr>
<tr>
<td>
<input type="text" value="4" />
</td>
<td>
<a href="#" class="delete">link</a>
</td>
</tr>
</table>
Quand je clique balise d'ancrage, je voudrais sélectionner <input>
la plus proche de mon lien, et obtenez sa valeur. Comment puis-je faire cela ? J'ai essayé :
$('.delete').click(function(e){
e.preventDefault();
var val = $(this).closest('input').attr('value');
alert(val);
});
mais sans succès.
OriginalL'auteur magda | 2010-11-01
Vous devez vous connecter pour publier un commentaire.
Le nom de la
closest
fonction est extrêmement trompeur: c'est en fait le plus proche de l'ancêtre qui est retourné.Le bon code serait:
Je ne recommanderais pas de liaison le gestionnaire d'événement à alllllllll d'ancrage balises; ce sera inefficace si il y a un certain nombre de ces éléments sur la page. Au lieu de cela, je voudrais fortement vous recommandons d'utiliser délégué() ou live() à la place.
Cela aura pour effet de lier le gestionnaire d'événement à l'
table
(une fois), puis utilise le Javascript événement bouillonnement des mécanismes permettant de détecter le clic sur les éléments qui correspondent au sélecteur passé en premier argument (dans ce cas, votre supprimer des boutons).Vous devez être en utilisant une ancienne version de jQuery. Délégué a été ajouté dans 1.4.2. Si vous utilisez une version antérieure à la version 1.3, mais moins de la 1.4.2, vous pouvez utiliser live à la place: api.jquery.com/live. Ou vous pouvez mettre à niveau votre version de jQuery pour la dernière (1.4.3)
yap, vous avez raison. J'ai été en utilisant 1.4, donc passé à google d'accueil. Merci !
OriginalL'auteur Matt
Si vous regardez la documentation pour les plus proches vous verrez qu'il dit qu'il trouve ancêtres ..
l'entrée dans votre cas n'est pas un ancêtre de la
.delete
lien.Vous avez besoin pour vous déplacer de haut avec
.closest('tr')
et ensuite de creuser pour trouver l'entrée avec.find('input')
donc
merci pour la démo 🙂
OriginalL'auteur Gabriele Petrioli
Essayer
OriginalL'auteur rahul
Voir Le Travail De Démonstration
Vous ne pouvez pas utiliser
closest
il y, essayez ceci:La
parent()
est utilisé pour revenir à la mèretd
du lien et ensuiteprev()
est utilisé pour trouver le frère précédent detd
et enfin avecfind
méthode,input
est recherché.Plus D'Infos:
OriginalL'auteur Sarfraz