2010-02-28 14 views
5

Mam tabeli, gdzie chcę zmienić tło komórek na myszy nad przyciskiem myszy i w dół, moje obecne rozwiązanie nie działa jak chcę go do:jQuery jest mousedown po najechaniu myszą

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); } 
      }); 
     }); 
    }); 
}); 

Czy istnieje sposób, aby to działało w ten sposób?

+0

Nie można przesuwać myszy nad elementem takim samym jak kliknięcie, czy też czegoś brakuje? – Pharabus

+0

Nie polegam na tym, co próbujesz powiedzieć, mouseover! = Click/mousedown = kliknij – Jacob

+2

jest to kombinacja, o której się nie mylę, jeśli masz myssed podczas gdy mysz jest nad elementem, uruchamia kliknięcie lub jest po wybraniu jakiegoś oporu? – Pharabus

Odpowiedz

15

EDIT: Biorąc pod uwagę Twój komentarz powyżej, można zrobić coś takiego:

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

To będzie kolor tła z td kiedy mouseover, ale tylko wtedy, gdy przycisk myszy jest naciśnięty.


Wygląda na to, że chcesz zmienić kolor po kliknięciu. Jeśli tak, to jest o wiele prostsze niż to, co próbujesz.

$(document).ready() { 

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

}); 

Spowoduje to zmianę tła elementów td na żółto po ich kliknięciu.

Będzie to podobne do zmiany koloru po najechaniu myszą.

EDYCJA: Właśnie zauważyłem tytuł twojego pytania.

Jeśli chcesz wywołać kliknięcie po najechaniu ...

$(document).ready() { 

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

}); 

... oczywiście, można wyeliminować click w tej sprawie i po prostu zmienić tło ze zdarzeniem mouseenter.

+0

to szalenie genialny patrick! Robi dokładnie to, czego oczekiwałbym od niego. Dodałem tylko "mousedown" dla td do kolorowania pojedynczej komórki również za pomocą jednego kliknięcia. Dziękuję Ci ! – Jacob

Powiązane problemy