2012-06-11 2 views
1

je code comme suit ajoute:Comment puis-je détecter si un .append jQuery a déjà été appliqué

if (json.expData[i] != null) { 
    $('#text' + i) 
    .append("<br><br><img src='/balloon.png'>" + json.expData[i]); 
} 

Lorsqu'un utilisateur clique sur un bouton et ce fonctionne le code ajoute. Cependant, si l'utilisateur clique à nouveau sur le bouton, il l'ajoute de nouveau et ainsi de suite.

Y at-il un moyen de détecter que les données ont déjà été ajoutées et que seules les données permettent de les ajouter si c'est la première fois?

Répondre

1

vous pouvez stocker un attribut booléen sur l'élément, comme data-isappended.

if (json.expData[i] != null) { 
    var $text = $('#text' + i); 
    if (!($text.data("isappended"))){ 
     $text.append("<br><br><img src='/balloon.png'>" + json.expData[i]); 
     $text.data("isappended", true); 
    } 
} 
+0

Cela me donne une erreur: $ text.data ("isappended") = true; SCRIPT5003: impossible d'affecter un résultat à une fonction – Alan2

+0

@Gemma J'ai modifié cette ligne de code dans ma réponse. – Curt

0

Vérifiez s'il y a une étiquette à l'intérieur img#text, qui devrait le faire

if ($('#text' + i).find('img').length > 0) 
{ 
    $('#text' + i).append("<br><br><img src='/balloon.png' />" + json.expData[i]); 

} 
+0

si l'élément a déjà une balise 'img' avant ajouter? – Curt

0

Si vous n'avez pas un autre élément avec id contient #text alors vous pouvez essayer comme ceci:

if($('[id^=text]').length) { // if some element with id text exists 

} else { // not exists 

} 
Questions connexes