8
votes

Sélectionnez TR par ID avec jQuery

J'essaie de sélectionner une TR à l'intérieur d'une table pour la supprimer mais je n'ai aucune chance avec les sélecteurs.

Table ressemble à ceci: p>

function deleteProduct(id) {
 $('#product_' + id).remove();
}


4 commentaires

Ce qui est avec le == '' à la fin de la table, peut avoir un problème là-bas et avez-vous vérifié le lien vers la fonction, devrait ressembler à JavaScript: Supprimer le produit ('ID')


@MAZZZ: Je suis d'accord avec votre premier point, mais WTF @ JavaScript: SupprimerProduct ('ID') ? Dans OnClick Les gestionnaires, il n'y a jamais besoin de la JavaScript: préfixe, et en passant la chaîne 'ID' à Supprimer ne résout rien.


Lorsque l'annexe de manière dynamique fait une différence, vous devez utiliser une méthode en direct ou déléguée au lieu de la liaison régulière, voir: Stackoverflow.com/questions/5589491/...


Je ne voulais pas dire la chaîne, et c'était pour l'attribut HREF AKA Supprimer


5 Réponses :


1
votes

Si vous utilisez littéralement SupprimerProduct (ID) Vous allez avoir besoin de remplacer ID avec le numéro de cette ligne.

Vous pouvez également sauter quelques niveaux dans l'arborescence Dom (supprimer le parent du parent) au lieu de mettre manuellement des identifiants. Je crois que vous pouvez mettre onclick = "$ (ceci) .parent (). Parent (). Supprimer ()" à la place.


0 commentaires

3
votes

Votre Fonction Fonction prend un argument ID , mais nulle part dans le onclick Le gestionnaire est défini cet argument. Essayez cela à la place:

html xxx

javascript xxx

démo 1

Comme indiqué dans les commentaires, vous avez a également reçu un peu de balise non valide dans votre

étiquette.

qui dit, vous utilisez jQuery donc il n'y a pas d'excuse pour ne pas écrire JavaScript discret . Débarrassez-vous du onclick entièrement, et utilisez ceci à la place: xxx

démo 2


Si vous souhaitez obtenir plus précis avec les sélecteurs, Cela fonctionnera avec le balisage actuel: xxx

Demo 3


0 commentaires

4
votes

Vous n'avez pas besoin d'avoir en ligne onclics et que vous n'avez pas besoin de fonction pour cela. Tout ce que vous avez à faire est, c'est que Call Ce qui fait référence à l'élément en cours de clic. Dans l'exemple ci-dessous, tout élément que vous avez cliqué sera supprimé. XXX

Vérifiez l'exemple de travail sur http://jsfiddle.net/aswae/2/

Vous pouvez également insérer un bouton Supprimer et sélectionner pour supprimer le bouton en cliquant.

Vérifiez l'exemple mis à jour sur http://jsfiddle.net/aswae/4/


1 commentaires

Le seul problème avec ceci est que cliquer n'importe où sur la ligne le supprimera, ce qui ne semble pas être l'action souhaitée.



1
votes

Changez votre lien [x] à quelque chose comme: xxx

et votre jQuery à: xxx


0 commentaires

14
votes

Je le ferais comme ça xxx pré>

et la jQuery: p> xxx pré>

Une autre alternative à ce sélecteur serait p>

 $('tr[id^="product_"] a').live('click', function () {
    // you could ge the id number from the tr 
    var id = $(this).closest('tr').attr('id').replace("product_","");
    //then you could remove anything the that ends with _id 
    $('[id$="_'+id+'"]').remove();
});


8 commentaires

Le

s est en annexe de manière dynamique, vous devez donc utiliser .Live () .


Til le plus proche () existe. Joli. Tant que nous sommes conscients que cela (sans modification) nécessitera que tout lien dans la table sert de lien Supprimer.


@Guttsy oui j'aurais dû noter que


Merci pour cela, comment puis-je toujours transmettre l'identifiant à la fonction si j'ai utilisé votre méthode? La raison en cours est qu'il doit supprimer une autre autre chose à l'aide du numéro d'identification afin qu'elle soit requise.


@kwhohasamullet J'ai édité ma réponse pour vous montrer comment obtenir l'identité si je ne suis pas sûr de ce que votre plan est pour cela, donc je ne sais pas si cela est précis à vos besoins


Merci pour cela - lorsque vous essayez d'utiliser ce code, j'obtiens l'erreur suivante: non capturé TypeError: Object # n'a pas de méthode 'Live' (fonction anonyme) hg-buy.html: 1152, a fait des googles mais ne pouvait pas trouver beaucoup, mais des idées?


Je vais devoir vous recontacter sur ça le matin


@kwhohasamlet Je ne suis pas sûr de ce que le problème n'est que de votre message d'erreur, vous devez regarder la ligne source 1152 dans hg-buy.html