Bonjour à toutes et tous,
J'ai un tableau dans lequel je place des div dans chacune des cellules. Certaines div sont contenues dans des a de façon à avoir un lien qui fait la taille de la cellule et une couleur appropriée.
Pour une fonction Jquery je me place dans mes div via leur class, je dois ensuite récupérer le cellIndex des td dans lesquelles les div sont placées. Le problème étant que certains div sont directement dans les td et d'autres snot contenu dans des a au sein des td, je ne eput donc pas utiliser .parent(). Je me suis donc tournée vers $(this).closest('td') et la même chose mais avec .parents(), mais sans succès
.
Si quelqu'un à une idée :
".reservation,.reservation_weekend,.emprunt,.emprunt_weekend,.retour_ok,.retour_ok_weekend" sont des class appliquées aux div contenues dans les td
.
En gros ce code me permet d'afficher une infobulle reprenant les données contenues dans les attributs data des div. La bulle se positionnant a droite de la div sélectionnée, sauf si le cellindex dépasse une certaine valeur ou là elle passe a gauche pour ne pas sortir du cadre. La fonction en elle même marche puisqu'elle fonctionnait avant que je fasse quelques modifs sur le dom.
Modifié par Klesk (08 Oct 2012 - 15:36)
J'ai un tableau dans lequel je place des div dans chacune des cellules. Certaines div sont contenues dans des a de façon à avoir un lien qui fait la taille de la cellule et une couleur appropriée.
Pour une fonction Jquery je me place dans mes div via leur class, je dois ensuite récupérer le cellIndex des td dans lesquelles les div sont placées. Le problème étant que certains div sont directement dans les td et d'autres snot contenu dans des a au sein des td, je ne eput donc pas utiliser .parent(). Je me suis donc tournée vers $(this).closest('td') et la même chose mais avec .parents(), mais sans succès

Si quelqu'un à une idée :
$('.reservation,.reservation_weekend,.emprunt,.emprunt_weekend,.retour_ok,.retour_ok_weekend').hover(function() {
var dataId = '[data-id="',
id = $(this).attr('data-id'),
firstAttr = '"]:first',
lastAttr = '"]:last',
buFirst = $(dataId + id + firstAttr),
buLast = $(dataId + id + lastAttr),
buFirstPosition = buFirst.position(),
buLastPosition = buLast.position(),
buY = buFirstPosition.top - 14,
buLastX = buLastPosition.left + 20,
nom = $(this).attr('data-nom'),
debut = $(this).attr('data-debut'),
fin = $(this).attr('data-fin');
$('#nom').append(nom);
$('#debut').append(' '+debut);
$('#fin').append(fin);
var bulleWidth = $('#resa_infobulle').width(),
buFirstX = buFirstPosition.left - bulleWidth - 12;
$('#crea_resa_conteneur').css('display','none');
var position = $(this).closest('td');
if (position.cellIndex < 28){
$('#resa_infobulle').css({'top':buY,'left':buLastX,'background':'url("template/images/agenda_crea_resa.png") no-repeat scroll left center transparent','padding-left':'9px','padding-right':'0'}).css('display','block');
} else {
$('#resa_infobulle').css({'top':buY,'left':buFirstX,'background':'url("template/images/agenda_crea_resa_droite.png") no-repeat scroll right center transparent','padding-left':'0','padding-right':'9px'}).css('display','block');
};
},function() {
$('#resa_infobulle').css('display','none');
$('#nom,#debut,#fin').empty();
});
".reservation,.reservation_weekend,.emprunt,.emprunt_weekend,.retour_ok,.retour_ok_weekend" sont des class appliquées aux div contenues dans les td

En gros ce code me permet d'afficher une infobulle reprenant les données contenues dans les attributs data des div. La bulle se positionnant a droite de la div sélectionnée, sauf si le cellindex dépasse une certaine valeur ou là elle passe a gauche pour ne pas sortir du cadre. La fonction en elle même marche puisqu'elle fonctionnait avant que je fasse quelques modifs sur le dom.
Modifié par Klesk (08 Oct 2012 - 15:36)