jQuery le plus proche TR sélection
Espère que quelqu'un pourra vous conseiller. D'avoir des problèmes en essayant de supprimer une ligne une fois qu'un lien a été cliqué.
HTML
<table>
<tr><td>Some Data</td><td><a href="#" class="remove-row>Remove Row</a></td></tr>
<tr><td>Some Data</td><td><a href="#" class="remove-row">Remove Row</a></td></tr>
</table>
Maintenant la JS
$("a.remove-row").live('click', function(eve){
eve.preventDefault();
$.ajax({
type: 'GET',
url: '/someaction/',
dataType: 'json',
success: function(msg){
if(msg.error){
alert(msg.error);
}else{
$(this).closest('tr').remove();
alert(msg.success);
}
}
})
});
Ce doit être vraiment simple mais pas son retrait de la ligne. Juste pour le plaisir si je le changer pour quelque chose comme
$('.remove-row').addClass('foo');
Il va ajouter de foo pour toutes les lignes de la table. Afin de comprendre pourquoi ses pas de retrait le plus proche de la ligne.
Des Idées ?
Remercie à l'avance.
OriginalL'auteur Lee | 2010-08-23
Vous devez vous connecter pour publier un commentaire.
Le problème est
this
renvoie actuellement à l'ajax objet dans votresuccess
de rappel, mais c'est une solution facile, utilisez lecontent
option de ce genre:La
context
option dicte ce quethis
sera dans le$.ajax()
des fonctions de rappel, puisque vous voulez qu'il soit de la.remove-row
vous avez cliqué sur, l'utilisationthis
comme l'option.success:
rappel,this
se réfère à laxhr
objet, paswindow
. jsfiddle.net/WzeAh Ceci, bien sûr, n'a aucune pertinence quant à votre proposition de solution. +1Désolé, je vais préciser un peu plus en la réponse, se comporte comme
window
pour l'usage courant, par exemple$(this).find(selector)
fonctionne de la même comme si$(this)
ont été$(window)
ou$(document)
.Nick - à Moins que j'ai mal compris vos éclaircissements, il ne semble pas (à l'intérieur de la fonction de rappel) comme si
$(this)
vous donne le même comportement que$(document)
, depuis que je fais un.find()
retourne0
matchs. jsfiddle.net/WzeAh/1 EDIT:$(window)
donne un0
résultat.Mise à jour, vous avez entièrement raison, j'ai eu fubar mon local jQuery installer des tests de performance sur ceci: stackoverflow.com/questions/3546825/... je n'ai pas de changer complètement foiré mon contexte sur les sélecteurs....oups, merci pour elle, donc c'est plus utile pour le gars à côté.
OriginalL'auteur Nick Craver
De Nick réponse devrait fonctionner, mais vous pouvez le faire aussi, je ne sais pas lequel est le mieux, probablement de Nick, mais il peut l'aider de toute façon...
OriginalL'auteur NicolasT
Vous avez ouvert attribut
class="remove-row
à la première ligne.Voir ici
OriginalL'auteur fantactuka
Ne serait-il pas plus facile de faire le supprimer/masquer la main avant de l'?
comme ceci :
OriginalL'auteur Tyler