2010-04-19 5 views
2

Si vous imaginez dans Microsoft Paint vous pouvez cliquer et maintenir pour peindre dans une zone, id aiment faire un semblable mais en ajoutant une classe aux cellules dans un tableau:jquery hover événement entre mousedown et mouseup - possible?

(notez ceci n'est pas pour la peinture/art juste un facile façon de l'expliquer!)

le travail isnt suivant ...

$(function(){ 
    $('td').mousedown(function(){ 
    console.log('down'); 
     $('td').bind('hover', function(){ 
     $(this).addClass('booked'); 
     }); 
    }) 

    $('td').mouseup(function(){ 
     $('td').unbind('hover'); 
    }); 
}) 
+0

cela pourrait aider à: http: //stackoverflow.com/questions/1569775/how-do-i-find-the-dom-node-that-is-at-a-given-xy-position-hit-test – elias

Répondre

1

il n'y a aucun cas "hover". Pourquoi ne pas simplement ajouter la classe dans le gestionnaire "mousedown" et l'enlever dans "mouseup"? Si vous souhaitez que la classe soit ajoutée seulement après un délai, définissez un délai d'expiration dans "mousedown" pour ajouter la classe, et annulez le délai dans "mouseup" (et supprimez également la classe).

$(function(){ 
    var timeout; 
    $('td') 
    .mousedown(function(){ 
     var $cell = $(this); 
     timeout = setTimeout(function() { 
     $cell.addClass('booked'); 
     }, 1000); 
    }) 
    .mouseup(function(){ 
     cancelTimeout(timeout); 
     $(this).removeClass('booked'); 
    }); 
}); 
+1

salut merci pointy, j'essaye de faire un drag-n-paint sur effet, l'ai maintenant trié en utilisant mousenter() au lieu de hover() – Haroldo

+0

Mais il y a une fonction 'hover()' jQuery. ;) http://api.jquery.com/hover/ Je pense qu'il veut que l'utilisateur clique et maintienne une cellule de tableau, puis fasse glisser la souris sur toutes les cellules qui ont besoin d'un éclairage. Sur mouseup, ce comportement devrait s'arrêter. – Tomalak

+0

Il y a une fonction "hover" mais c'est un wrapper de commodité autour du mouseenter et du mouseleave. @Tomalak si c'est ce qu'il veut, c'est très mal expliqué. – Pointy

0

Jetez un oeil à jQuery UI Selectable, qui fait quelque chose de semblable à ce que vous avez décrit. Jetez un oeil à la demo. exemple de mise en œuvre simple:

<script type="text/javascript"> 
$(function() { 
    $("#selectable").selectable(); 
}); 
</script> 

<ol id="selectable"> 
    <li class="ui-widget-content">Item 1</li> 
    <li class="ui-widget-content">Item 2</li> 
    <li class="ui-widget-content">Item 3</li> 
    <li class="ui-widget-content">Item 4</li> 
    <li class="ui-widget-content">Item 5</li> 
    <li class="ui-widget-content">Item 6</li> 
    <li class="ui-widget-content">Item 7</li> 
</ol> 
0

résolu:

mouseenter() plutôt que hover() qui, comme Pointy souligné n'est pas explicitement une fonction

Questions connexes