web-dev-qa-db-fra.com

jQuery supprime une ligne de la table avec des caractères non standard

J'essaie de supprimer une ligne de la table en utilisant jQuery comme ceci

function removeTableRow(trId){
    $('#' + trId).remove();
}

Cependant, cela ne fonctionne pas si l'id contient un caractère comme "%", "^", "&", ",", etc.

Savez-vous s'il y a du travail pour ça?

23
Timothy Ruhle

Je crois que la raison peut être trouvée ici: Quelles sont les valeurs valides pour l'attribut id en HTML?

Cependant, je ne suis pas sûr d'avoir une solution de contournement autre que l'évident (changer votre identifiant)

16
Chris Simpson

Les identifiants HTML 4.0 ne peuvent pas contenir ces caractères et être valides en même temps :

Valeurs d'attribut de type ID et NAME doit commencer par une lettre dans la plage A-Z ou a-z et peuvent être suivis de lettres (A-Za-z), chiffres (0-9), traits d'union ("-"), traits de soulignement ("_"), les deux points (":") et les points ("."). Celles-ci les valeurs sont sensibles à la casse.

Si vous devez, vous pouvez essayer ceci:

function removeTableRow(trId) {
    $(document.getElementById(trId)).remove();
}

Je recommanderais toutefois de corriger le code HTML.

12
Tomalak

Je ne suggérerais pas d'utiliser ces caractères dans une chaîne d'identifiant. Cependant, si vous le jugez nécessaire, vous devez utiliser \\ pour quitter le caractère du sélecteur.

Exemple: http://jsfiddle.net/NuWSp/

<table>
    <tr id="b%b">
        <td>hello</td>
    </tr>
    <tr>
        <td>world</td>
    </tr>
</table>


function removeTableRow(trId){
    $('#' + trId).remove();
}

removeTableRow( "b\\%b" );
8
george

Il est préférable que plusieurs tables de plusieurs tables soient supprimées via un autre attribut, tel que classe ou groupe.

Voici un exemple de la façon de supprimer via l'attribut du groupe:

$("table tr[group='"+groupname+"']").remove();

J'espère que ça aide.

4
av_master

Je ne sais pas si cela fonctionnera, mais vous pouvez l'essayer

var id = "id%#&hh";
$("tr").each(function(){
    if($(this).attr("id") == id){
        $(this).remove();
        return;
    }
});
0
grongor