2010-07-27 13 views
0

Il s'agit probablement d'une question noob, mais la façon dont j'ai implémenté la fonction appendTo() ci-dessous ne fonctionne pas comme prévu. Fondamentalement, il a ajouté l'élément et l'a immédiatement retiré à nouveau. Ça clignote et ça vous manque.Utiliser appendTo() dans JQuery ajoute un élément puis le supprime immédiatement ... solution?

Quelqu'un peut-il comprendre pourquoi cela pourrait se produire?

est ici où la fonction est appelée:

<?php foreach ($words as $word) { 
echo "<li class='$word[0]'><a href='' onclick='add_to();'>$word</a></li>"; 
} 

Et voici la fonction elle-même (à peu près pris à partir du site tutoriel jQuery:

function add_to() { 
     $('<h1>Test</h1>').appendTo('.ad_text'); 
    } 

Ma première pensée est qu'un script qui appelle le document ? .ready() est appelée, qui efface la fonction add_to() ce script est au-dessus add_to(), et est la suivante:

$(document).ready(function(){ 

     //when a link in the filters div is clicked... 
     $('#filters a').click(function(e){ 

      //prevent the default behaviour of the link 
      e.preventDefault(); 

      //get the id of the clicked link(which is equal to classes of our content 
      var filter = $(this).attr('id'); 

      //show all the list items(this is needed to get the hidden ones shown) 
      $('#content ul li').show(); 

      /*using the :not attribute and the filter class in it we are selecting 
      only the list items that don't have that class and hide them '*/ 
      $('#content ul li:not(.' + filter + ')').hide(); 

     }); 

    }); 

Peut-être un peu de code contradictoire là-bas? Désolé - nouveau à Javascript, et essayant de pavbler quelque chose ensemble rapidement.

TIA, Andy

+0

Où add_to est appelé? – balupton

+0

S'il vous plaît nous montrer le balisage HTML ... pas le PHP. – James

+0

@balupton add_to appelé depuis l'événement onclick dans l'extrait php ci-dessus. @ J-P le HTML est dans le PHP ci-dessus. Avez-vous besoin de plus de HTML? –

Répondre

5

Votre lien est recharger la page. Essayez ceci (# ajouté à l'attribut href)

foreach ($words as $word) { 
    echo "<li class='$word[0]'><a href='#' onclick='add_to();'>$word</a></li>"; 
} 
+0

+1 - Bonne prise, complètement raté ce –

+0

alors se débarrasser du # dans le href? –

+0

oh désolé, je viens de voir que vous avez ajouté un #! Merci! –

0

Je ne peux pas dire avec certitude, mais vous pourriez être Outrepasser la fonction clic que vous avez défini dans l'attribut onclick avec celui de la fonction document.ready.

+0

Il est important de distinguer qu'il/elle ne * surcharge * pas, * ils ajoutent * un gestionnaire de clic, si ce lien se trouve dans '# filters'. –

+0

oui, Nick a raison. et l'ajout de Nalum de l'ancre de hachage a travaillé. Cependant, j'ai rencontré des problèmes en essayant d'appendTo() dans une balise textarea. Aucune suggestion? –