Je travaille sur asp.net mvc 3. J'ai la structure suivante,
<tr data-uid="123">
<td>
<a href="#" id="click">Click Me</a>
</td>
</tr>
Maintenant, je veux trouver la valeur de l'attribut data-tag. J'ai essayé comme,
$("a#click").click(function(){
var i= $(this).parent('td').parent('tr').data('uid');
});
mais ne fonctionne pas pour moi. Guidez-moi s'il-vous-plaît.
Essaye ça
$("a#click").click(function(e){
e.preventDefault();
var i = $(this).closest('tr').attr('data-uid');
console.log(i);
var j = $(this).closest('tr').data('uid');
console.log(j);
});
e.preventDefault()
est juste pour empêcher l'action par défaut .. Vous pouvez le supprimer si vous n'en avez pas besoin.
Assurez-vous également que votre tr
est encadrée par des balises de table pour que cela fonctionne.
$("a#click").click(function(e){
e.preventDefault();
var i = $(this).closest('tr').attr('data-uid');
console.log(i);
var j = $(this).closest('tr').data('uid');
console.log(j);
});
Utilisation de .closest()
:
var $row = $(this).closest("tr");
Utilisation de .parent()
:
Cochez cette méthode .parent()
. Ceci est une alternative à .prev()
et .next()
.
var $row = $(this).parent() // Moves up from <button> to <td>
.parent(); // Moves up from <td> to <tr>
<td>
var $row = $(this).closest("tr"), // Finds the closest row <tr>
$tds = $row.find("td"); // Finds all children <td> elements
$.each($tds, function() { // Visits every single <td> element
console.log($(this).text()); // Prints out the text within the <td>
});
<td>
var $row = $(this).closest("tr"), // Finds the closest row <tr>
$tds = $row.find("td:nth-child(2)"); // Finds the 2nd <td> element
$.each($tds, function() { // Visits every single <td> element
console.log($(this).text()); // Prints out the text within the <td>
});
.closest()
- récupère le premier élément qui correspond au sélecteur.parent()
- récupère le parent de chaque élément de l'ensemble actuel d'éléments correspondants.parents()
_ - récupère les ancêtres de chaque élément de l'ensemble actuel d'éléments correspondants.children()
- récupère les enfants de chaque élément dans l'ensemble d'éléments correspondants.siblings()
- récupère les frères et soeurs de chaque élément dans l'ensemble des éléments correspondants.find()
- récupère les descendants de chaque élément du jeu d'éléments correspondants.next()
_ - récupère le frère immédiatement suivant de chaque élément de l'ensemble des éléments correspondants.prev()
_ - récupère le frère immédiatement précédent de chaque élément de l'ensemble des éléments correspondantsUtilisez ceci:
var i= $(this).parent('td').parent('tr').attr('data-uid');
Votre code devrait fonctionner tel quel, mais au lieu d'utiliser plusieurs fichiers .parent (), vous devriez utiliser les parents ('tr'). http://api.jquery.com/parents/
$(function() {
$("a#click").click(function(){
var i= $(this).parents('tr').data('uid');
});
});
Avez-vous essayé .attr()
?
$("a#click").click(function(){
var i= $(this).parent('td').parent('tr').attr('data-uid');
console.log( i );
});