2009-09-11 8 views
1

php envoie les chaînes html au html via ajax enveloppé dans les balises <p class="select"></p>, css lit parfaitement la classe. javascript/jquery ne fonctionne pas. javascript/jquery ne va même pas analyser <p onclick="function()"></p>. Qu'est-ce que je fais mal?javascript wont pas analyser les balises php html

Heres mon php (envoie des données via fin ajax)

echo "<p class='select' onclick='populate();' >{$row['song_name']} </p>"; 

Heres mon css (fonctionne bien)

p.select{color:#fff;padding: 5px;margin:0} 
p.select:hover{color:#fff;background:#f60;cursor:pointer;} 

Heres mon javascript méthode 1 jquery.

$("p .select").click(function(){ 
     var str = $(this).val(); 
     alert(str); 
    }); 

méthode 2 sur la fonction de clic.

function populate() 
{ 

alert('here') 
} 

aucune des deux méthodes ne répond du tout. Gourou, pourquoi est-ce?

Répondre

1
$("p .select").live ("click" , function(){ 
     var str = $(this).text(); 
     alert(str); 
    }); 

Voir

Events/live

Associe un gestionnaire à un événement (comme clic) pour tous les cours - et futur - élément adapté.

+1

Bien que comme un élément P ne possède pas une propriété de valeur, ce ne fonctionne toujours pas: val() devrait probablement être du texte(). http://docs.jquery.com/Attributes/val – NickFitz

0

J'ai posté un exemple de travail (dans Firefox) ci-dessous. Je pense que vous avez oublié de mettre la méthode jquery dans l'événement onload. À côté des autres (petits) insectes ...

<html> 
    <head> 
     <style> 
     p.select{color:#fff;padding: 5px;margin:0} 
     p.select:hover{color:#fff;background:#f60;cursor:pointer;} 
     </style>  
     <script src="jquery-1.3.2.min(2).js" type="text/javascript"></script> 
     <script type="text/javascript">   
     function bodyOnLoad() { 
      //instead of "p .select" "p.select" 
      $("p.select").click(
       function(){ 
        //changed val() into text() 
        var str = $(this).text(); 
        alert(str); 
       }); 
     } 
     </script>   
    </head> 
    <body onload="bodyOnLoad()"> 
     <p class='select'>Songname</p> 
    </body> 
</html> 
+0

jQuery a une construction dans '$ (document) .ready (function() {...});' c'est plus simple que ' Eric

1

Deux choses:

  • p .select choisiront <p> balises contenant un élément avec la classe de sélection. p.select sélectionne <p class="select">.
  • Pourquoi ne pas déplacer la fonction populate dans le live? Je soupçonne que le jquery live (ou click) supprime tous les gestionnaires explicites.

Essayez ceci:

$("p.select").live("click",function() 
{ 
    var str = $(this).text(); 
    alert(str); 
    populate(); 
}); 
Questions connexes