2010-02-28 18 views
5

Tengo una tabla donde quiero cambiar fondo de la celda el ratón por encima y el botón del ratón, mi solución actual no funciona como yo quiero que:jQuery se mouseDown en 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); } 
      }); 
     }); 
    }); 
}); 

¿Hay alguna forma de hacerlo funcionar así?

+0

¿No pasa el mouse por encima y por debajo de un elemento igual que hacer clic o me falta algo? – Pharabus

+0

No confío en entender lo que está tratando de decir, mouseover! = Haga clic/mousedown = haga clic en – Jacob

+2

es la combinación de la que estoy confundido, si mousedown mientras el mouse está sobre un elemento dispara el evento click o después de algún tipo de selección de arrastre? – Pharabus

Respuesta

15

EDIT: Dada su comentario anterior, se podría hacer algo como esto:

$(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'}); 
    }); 
}); 

Esto le colorear el fondo de la td cuando mouseover, pero sólo si el botón del ratón está presionado.


Parece que solo quiere cambiar el color cuando hace clic. Si ese es el caso, es mucho más simple que lo que estás intentando.

$(document).ready() { 

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

}); 

Esto cambiará el fondo de los elementos amarillos td al hacer clic en ellos.

Será similar a cambiar el color cuando mueva el mouseover.

EDIT: Acaba de notar el título de su pregunta.

Si desea activar un clic cuando se pasa ...

$(document).ready() { 

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

}); 

... por supuesto, se podría eliminar la click en ese caso y simplemente cambiar el fondo con el evento mouseenter.

+0

¡eso es genio patricio! Hace exactamente lo que esperaría que hiciera. Solo he agregado 'mousedown' para que td coloree una sola celda con un solo clic también. Gracias ! – Jacob

Cuestiones relacionadas