2010-07-15 4 views
3

J'essaie de faire une chronologie. La timeline comporte peu d'éléments clés dynamiques placés avec une position absolue sur des positions aléatoires. Existe-t-il un moyen d'obtenir les éléments Précédent et Suivant par rapport à un dragger déplaçable? Quelque chose comme "si le #dragger est à gauche: 55px, l'élément suivant est .keyframe 102px à gauche: 102px et l'élément précédent est .keyframe 32px à gauche: 32px". J'ai une démo au http://jsfiddle.net/3pXC9/1/ faites simplement glisser la barre rouge autour, en faisant glisser je devrais obtenir ses "frères et sœurs" basés sur la position.jQuery Obtenir les éléments Précédent et Suivant sur Glisser

Merci

Répondre

2

Quelque chose comme ça?

Démo: http://jsfiddle.net/3pXC9/11/

Javascript utilisé:

stop: function(event, ui) { 
     var this_left = $(this).position().left; 
     var keyframes = $(".keyframe"); 
     var closest_left = [null,0], closest_right = [null,0]; 

     keyframes.each(function(index) { 

       var t = $(this); 
       var offset = t.position().left - this_left; 
       if (offset >= 0) { 
         if (closest_right[0] == null || offset < closest_right[1]) { 
           closest_right[0] = t; 
           closest_right[1] = offset; 
         } 
       } 
       else { 
         if (closest_left[0] == null || offset > closest_left[1]) { 
           closest_left[0] = t; 
           closest_left[1] = offset; 
         } 
       } 
     }); 
     /* 
     closest_left[0] = closest element to the left (null if none) 
     closest_left[1] = offset relative to the dragger 
     the same goes for closest_right 
     */ 
} 
+0

Thanx Simen, cela fonctionne! – Mircea

Questions connexes