Salutations Guru's, C'est un peu difficile à expliquer, mais je vais tenter le coup.jQuery .live feu plusieurs fois!
J'ai une petite question concernant la fonction .live() dans JQuery. Je vais simplifier l'exemple ici. J'ai une page "index.php" qui a un conteneur "#display_files_container" qui est rempli avec des liens d'ancrage qui sont générés dynamiquement par une page différente "process.php". Les liens sont chargés dans ce même <div>
lorsque ces liens sont sélectionnés en fonction des attributs de ce lien. Voir Exemples:
index.php
<html>
<head><title>index.php</title>
<!-- this function below loads process.php and passes it the dirid variable via post. I then use this post variable inside of process.php to pull other links from the database -->
<script language="text/javascript">
$('.directory').live("click", function() {
$('#display_files_container').load('plugins/project_files/process.php', {dirid: $(this).attr('dirid')});
});
</script>
</head>
<?php
/*This code initial populates the link array so we have the first links populated before the users clicks for the first time*/
some code to fetch the $current_directory_list array from the database initially....
>?
<body>
<div id='display_files_container'>
<?php
/*Cycle through the array and echo out all the links which have been pulled from DB*/
for($i=0;$i<$current_directory_count;$i++) {
echo "<a href='#' class='directory' dirid='".$current_directory_list[$i]['id']." '>".$current_directory_list[$i]['directory_name'].
"</a> ";
}
?>
</div>
</body>
</html>
process.php
ce fichier inclut du code pour remplir le tableau de current_directory_list de $ [] à partir de la base de données en fonction de la poste variable « $ _POST ['dirid'] "qui a été envoyé à partir de la méthode .click() dans index.php. Il résout alors les résultats et nous les affichons dans le conteneur #display_files_container. Lorsque vous cliquez sur ces liens, le processus se répète.
Cela fonctionne ..... vous pouvez cliquer sur l'arborescence et charger les nouveaux liens à chaque fois. Cependant, il semble vouloir .load() le fichier process.php plusieurs fois pour un clic. Le nombre de fois que process.php est chargé semble augmenter au fur et à mesure que l'on clique sur les liens. Donc, par exemple, vous pouvez cliquer sur un lien et les rapports firebug que process.php a été chargé 23 fois ..... J'imagine que j'enregistrerais un stackoverflow. S'il vous plaît laissez-moi savoir si vous avez des idées. Y at-il des moyens que je peux assurer que .live() charge le fichier process.php une seule fois?
Merci, -CS
Qu'est-ce que .directory? Est-ce un bouton, ou votre div wrapper principal? – Catfish
donner la version complète et pas un simplifié .. comme le problème pourrait ne pas exister dans la version simplifiée .. –
puis-je voir la source générée plutôt que le php? – mcgrailm