Vous n'êtes pas identifié(e).
Saluton,
J'ai le bout de page HTML suivant
</tr>
</thead>
<tfoot>
<tr><th colspan="6"><input type="button" value="Insérer une ligne" id="insert"/></th></tr>
</tfoot>
<tbody>
</tbody>
</table>
Je souhaite récupérer l'id de la table (agents ici) en jQuery lors de l'interception
de l'évènement onClick du bouton d'id="insert" qui est lui-même le seul enfant du seul enfant <tr> du <tfoot> de cette <table>.
Et là, je coince.
Quelqu'un sait faire ?
Au hasard, Pierrot ?
Merci.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je dois accompagner Dame 4in qui va s'acheter des godasses (encore !).
J'ai trouvé ça
mais je n'ai pas encore eu le temps de tester.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
au hazard ????? :D
$(this).closest('table').attr('id');
a++
Hors ligne
Merci Pierrot,
Le hasard fait souvent tellement bien les choses
Je n'ai plus le temps d'incorporer cela à mon code, mais nul doute que ta syntaxe sera moins approximative que la mienne.
Cette méthode closest reste cependant un peu confuse dans mon esprit.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
citation :
Cette méthode renvoie le plus proche parent correspondant à l’expression.
cette explication ne peut être plus simple
a++
Hors ligne
Ce n'est pas tout à fait ce qui est écrit dans mon bouquin :
closest(sélecteur, contexte): Récupère le plus proche élément (parent ou déjà dans la liste récupérée par la fonction jQuery ()) de chaque élément de la liste, correspondant au sélecteur indiqué. Le paramètre contexte est optionnel.
Cela dit, il ne montre aucun exemple utilisant le deuxième paramètre.
De toutes façons
retourne "undefined".
La méthode parents('table').attr('id) retourne la même chose.
SCROGNEUGNEU de SCROGNEUGNEU.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bon, pour l'instant j'ai rusé en mettant l'identifiant de la table dans l'attribut alt
et du coup
peut fonctionner, ce qui était ma préoccupation première, mais cela ne me semble pas intellectuellement satisfaisant.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
montre ton html complet stp.
parce que moi, je viens de tester, et çà me retourne bien ce que je veux.
a++
Hors ligne
C'est bien là le problème, c'est que le HTML est, en partie, construit par jQuery et Ajax.
Notamment ce foutu plugin
jQuery Scrollable Table Plugin
==============================
This jQuery plugin converts a properly formatted table, having thead and tbody elements (tfoot optional), into a scrollable table. The tablescroll jQuery plugin is a simple markup manipulation plugin, it will manipulate the table, create a couple of new elements and wrap everything in a DIV.
dont je parlais ici et dont je n'arrive pas à en voir le résultat dans la console Firebug.
Je crois que je vais m'en passer et tenter de gérer ça à l'ancienne.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bon, ça se complique.
Ceci
me génère bien cela.
Bien noter l'<input> d'id "remove", mais ensuite, cet appel à jQuery reste muet
C'est pourtant la méthode live() et non bind() qui est invoquée;
Mystère et misère.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
$("remove").live devient $("#remove").live
a++
Hors ligne
merci mon Pierrot.
Alors ça, je me foutrais des baffes, même pas foutu-capable de recopier un code.
MoKo, BOULET !!!!
MoKo, BOULET !!!!
MoKo, BOULET !!!!
MoKo, BOULET !!!!
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bon, ça ne change rien au résultat, le <tr> n'est pas supprimé et j'ai ajouté un petit alert($tr) qui n'est jamais exécuté.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
essaye avec delegate
et montre moi ton code !!!!!!!!!!
nomdidiou !!!!!!!!!!!!!
a++
Hors ligne
Ne t'énerves pas, ma pou-poule. D'abord je découvre cette méthode delegate() de gestion avancée des événements qui ne figure même pas à l'index du bouquin d'Éric Sarion.
Mais delegate ne change rien
Bon, voici le code généré, récupéré dans l'onglet script de Firebug.
</tr>
</thead>
<tfoot>
<tr><th colspan="6"><input type="button" value="Insérer une ligne" alt="agents" id="insert"/></th></tr>
</tfoot>
<tbody>
</tbody>
</table>
</div>
<div id="tabs-1">
<h1>Table utilisateurs</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-2">
<h1>Table grades</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-3">
<h1>Table fonctions</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-4">
<h1>Table equipes</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-5">
<h1>Table services</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-6">
<h1>Table positions</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
<div id="tabs-7">
<h1>Table postes</h1>
<img src="vues/encours.jpg" alt="construction en cours" />
</div>
</div>
<form name="nomencs" method="post" action="index.php"/>
<p class="centerinput" >
<input class="bouton" type="submit" value="RETOUR AU MENU" />
</p>
<input type="hidden" name="page" value="Menu"\>
</form>
<script type="text/javascript" src="../JQUERY/tablescroll/tablescroll.js"></script>
<script>
/*<![CDATA[*/
jQuery(document).ready(function($)
{
$('#agents').tableScroll({height:150,width:600});
$('#utilisateurs').tableScroll({height:150,width:600});
$('#grades').tableScroll({height:150,width:600});
$('#fonctions').tableScroll({height:150,width:600});
$('#equipes').tableScroll({height:150,width:600});
$('#services').tableScroll({height:150,width:600});
$('#positions').tableScroll({height:150,width:600});
$('#postes').tableScroll({height:150,width:600});
});
/*]]>*/
</script>
</body>
</html>
mais la ligne insérée dans <tbody> n'y apparaît pas.
Quant à controleurs/js.js :
function ajax_get_nomenc(table)
{
$.ajax({
url : "modeles/getnomenc.sql.php?table=" + table,
complete : function(xhr)
{
var response = xhr.responseXML;
var $lignes = $(response).find(table);
$.each($lignes, function()
{
var html= $(this).find('ligne').text();
$("table#"+table+" tbody").append(html);
});
}
});
}
Ah tu voulais du code, ben en voilà.
Désolé mais notre forum ne colorise plus le code.
C'est le résultat d'une construction dynamique par PHP.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
mon pti MK, j'ai pas le temps ce soir, mais promis, demain matin (très tôt), je regarde
a++
Hors ligne
Je viens de lire ce petit tuto du site du Zéro : Le principe de la délégation d'événement et, du même coup, je me rends compte que ma façon de l'utiliser est erronée, mais je ne vois pas auprès de quel parent du bouton #remove, je pourrais déléguer l'action de supprimer ce <tr>.
Mais bon, je m'aperçois que je suis là-dessus depuis 2h30 ce matin (avec des grandes coupures, je te rassure), notamment pour mettre cuire ma soupe au chou préférée, donc je vais faire un grand break, jusqu'à .... on verra bien quand.
Encore, merci, mon Pierrot.
PS : j'ai fait tourner un peu ma SKYTEAM DAX 125 dans l'allée chez moi, donc seulement en 1ère. (J'attends toujours mon CPI pour pouvoir m'assurer et faire faire la plaque).
Boudi ! l'est pêchue la bête, même avec mon quintal sur le siège, elle partirait vite en wheeling.
Va bien finir par se tordre le coup, l'vieux !
Ci-gît, MoKo, mort avant d'avoir pu profiter pleinement des avantages de jQuery.
RIP
L'intérêt c'est que j'y retrouverais vite c'te bonne Raf, tu sais bien, la Valoche qui n'est point sotte du tout, elle.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bon, j'ai passé ma soirée à effectuer une saine lecture Simplifiez vos développements JavaScript avec jQuery de Michel Martin éditions du Site du Zéro, lecture qui m'a amené à y poster ce commentaire :
Saluton,
J'ai reçu le bouquin au courrier, hier matin.
Une bonne partie de ma journée d'hier et de ma nuit a été consacrée à sa lecture et j'avoue une petite déception a priori.
Des imprécisions, voire des erreurs. Par exemple quant au comportement des balises <span> qui, à ma connaissance, sont des balises inline et non block (pp 55-57).
Un manque (voire un oubli ?): dans les chapitres 8 et 9 afférents à la gestion événementielle, je n'ai pas lu une ligne à propos des méthodes live() et delegate(). Ces méthodes n'ont même pas d'entrée dans l'index du livre, index au demeurant assez frustre.
Voilà, je ne jette pas le bébé avec l'eau du bain, peut-être une deuxième lecture plus attentive m'amènera-t-elle à réviser mon jugement mais, pour l'heure, je reste sur ma faim.
Amike, MoKo.
J'ai toutefois retenu, et mis en application, la recommandation de MM qui consiste à positionné l'appel aux sources JQuery et/ou Javascript, juste avant la balise fermante </body> et non plus dans le bloc <head></head> comme j'avais coutume de le faire.
Je vous cite les arguments invoqués par MM en bas de la page 21 de son bouquin
Optimisation du code
Voici quelques recommandations qui augmenteront les performances des pages qui contiennent du code jQuery :-1. Invoquez la bibliothèque jquery.js à la fin du document, avant la balise </body>.
-2. Insérez le code jQuery rattaché à la page dans un fichier annexe et faites référence à ce fichier juste après la balise qui indique où se trouve la bibliothèque jQuery.
Ces positions stratégiques optimisent le temps de chargement de la page. En effet, de nombreux navigateurs bloquent l'exécution du code qui suit une balise <script> jusqu'à ce que cette balise ait été chargée et exécutée. En plaçant les balises <script> juste avant la balise (fermante) </body>, l'affichage de la page n'est pas "freiné" par le code jQuery.
Bon, ça ne fait pas avancer le schmilblick sujet initial de ce post, mais comme disait ma grand-mère:
si ça gagne pas, ça débarasse.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Me reportant à la documentation officielle de jQuery, je constate que les méthodes live() et delegate() seraient obsolètes (jQuery 1.4.3+) et qu'il conviendrait dorénavant d'utiliser leur équivalent on() jQuery 1.7+
Méthode qui, elle, est copieusement référencée et illustrée dans le bouquin de Michel Martin. (au temps pour moi, donc).
Ceci dit, pour en revenir à mes moutons, je ne vois toujours pas en quoi ces méthodes peuvent me permettre de récupérer dans l'événement click d'un <input type="button" id="remove"/> situé dans un <td> d'un <tr> d'un <tbody> d'une <table> la valeur de l'attribut id de cette <table>.
Par contre on doit pouvoir déléguer à cet événement click de l'<input type="button" id="remove"/> la suppression du parent <tr id="x">, où id contient éventuellement la valeur de la clé primaire de la ligne dans la table du SGBDR.
A approfondir .....
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
laisse le navigateur et Firebug de marbre.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
A la lecture de cette partie de tuto : Plus loin dans la gestion événementielle - Délégation d'événements, je crains de comprendre que les délégations ne peuvent intervenir qu'à partir d'objets pré-existants à leur clônage par jQuery.
Du coup j'ai créé un ceci :
et j'ai ajouté ceci a sttyle.css
Mais ça n'apporte aucun changement.
Certes il s'agit de la méthode on(), mais comme elle semble être appelée à remplacer les fonctions live() et delegate()....
Bref, je suis complètement à la ramasse.
En plus je commence à avoir la migraine.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
YOUPIEEEEE!!!!
C'était bien ça le problème, après avoir refermé le navigateur, donc bien vidé les caches et rechargé les bonnes versions des scripts, avec cette <tr class="hidden">, ce code semble fonctionner
[EDIT]En fait, maintenant que ça fonctionne, j'ai ôté le <tr> fantôme (de class="hidden"), et je m'aperçois que ça fonctionne tout à fait très bien sans.
Bizarre, qu'est-ce donc qui foirait ?[/EDIT]
Il me reste à tester avec une ligne provenant de la table de la BD, donc ayant un id dans $(this).closest("tr").attr("id"), pour tester ajax_remove_ligne(table,id).
Mais là, c'est une autre histoire, je vais de nouveau me heurter au problème de récupération du nom de la table.
Je ne vais tout de même pas devoir à nouveau dupliquer, en PHP, ce nom dans chaque attribut alt de #remove !
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je ne vais tout de même pas devoir à nouveau dupliquer, en PHP, ce nom dans chaque attribut alt de #remove !
Ben, pour l'instant en tous cas, si. (:'-(
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Par contre, maintenant que je peux insérer et supprimer autant de lignes que je veux, je viens de me rendre compte que le plugin tabscroll, qui est censé limiter la hauteur du tbody à 150px, ne limite que dalle.
Et c'est reparti !
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
A bien scruter les codes par comparaison, je ne vois pour l'instant que cette seule différence majeure entre
et
mais ça ne m'explique pas pourquoi je n'obtenais pas d'affichage de mon alert().
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne