2010-02-28 6 views
5

J'ai une table où je veux changer fond de la cellule de la souris et le bouton de la souris vers le bas, ma solution actuelle ne fonctionne pas comme je le souhaite:jQuery est mousedown sur mouseover

function ChangeColor(sender) { 

    sender.style.backgroundColor = 'yellow'; 

} 

var clicking = false; 


$(document).mouseup(function() { 
    clicking = false; 
}); 


$(document).ready(function() { 
    $('#Table1 tr').each(function() { 
     $('td', this).each(function() { 
      $(this).mousedown(function() { 
       clicking = true; 
      }); 
      $(this).mousedown(function(event) { 
       if (clicking==true) { ChangeColor(this); } 
      }); 
     }); 
    }); 
}); 

Y at-il façon de le faire fonctionner comme ça?

+0

n'est pas la souris sur un élément de la même manière que le clic ou suis-je quelque chose manque? – Pharabus

+0

Je ne compte pas comprendre ce que vous essayez de dire, mouseover! = Click/mousedown = click – Jacob

+2

c'est la combinaison que je suis confus au sujet, si vous souris pendant que la souris est sur un élément il déclenche l'événement de clic ou sont vous après une sorte de glisser sélectionner? – Pharabus

Répondre

15

EDIT: Compte tenu de votre commentaire ci-dessus, vous pourriez faire quelque chose comme ceci:

$(document).ready(function() { 
    isMouseDown = false 

    $('body').mousedown(function() { 
     isMouseDown = true; 
    }) 
    .mouseup(function() { 
     isMouseDown = false; 
    }); 

    $('Table1 tr td').mouseenter(function() { 
     if(isMouseDown) 
      $(this).css({backgroundColor:'orange'}); 
    }); 
}); 

Cela couleur de l'arrière-plan de la td lorsque vous mouseover, mais seulement si le bouton de la souris est vers le bas.


Il semble que vous vouliez juste changer la couleur lorsque vous cliquez. Si c'est le cas, c'est beaucoup plus simple que ce que vous essayez.

$(document).ready() { 

    $('#Table1 tr td').click(function() { 
     $(this).css({backgroundColor:'yellow'}); 
    }); 

}); 

Cela va changer l'arrière-plan des éléments td jaunes lorsque vous cliquez dessus.

Il sera similaire de changer la couleur lorsque vous passez la souris.

EDIT: Vous venez de remarquer le titre de votre question.

Si vous voulez déclencher un clic lorsque vous passez la souris ...

$(document).ready() { 

    $('#Table1 tr td').click(function() { 
     $(this).css({backgroundColor:'yellow'}); 
    }) 
    .mouseenter(function() { 
     $(this).click(); 
    }); 

}); 

... Bien sûr, vous pouvez éliminer l'click dans ce cas et il suffit de changer l'arrière-plan avec l'événement mouseenter.

+0

c'est génial génie patrick! Il fait exactement ce que je m'attendrais à faire. J'ai seulement ajouté 'mousedown' pour td pour colorer une seule cellule en un seul clic. Je vous remercie ! – Jacob