Kamil Szalewski

Kamil Szalewski myślę, projektuję i
staram się tworzyć

Temat: Warunek na podstawie mouseover

Witam,
mam następujący problem. Potrzebuję zrobić if, który na podstawie tego czy myszka jest nad divem ma podjąć akcję.

To nie dziala:

if($(".Beam").mouseover()==true) {

} else {
}


To też :(


if($(".Beam").mouseover()) {

} else {
}


Z gory dzięki za odpowiedź ;)

Pozdro,
KamilKamil Szalewski edytował(a) ten post dnia 28.07.10 o godzinie 10:24

konto usunięte

Temat: Warunek na podstawie mouseover

Pierwszy z brzegu przykład z dokumentacji:

$('#outer').mouseover(function() {
$('#log').append('<div>Handler for .mouseover() called.</div>');
});

Temat: Warunek na podstawie mouseover

Czemu warunek, a nie $.bind() ?

/E: bind fajniejszy, bo można:
- podłączyć pod element kilka handlerów
- unbindnąć element (albo 'odłączyć' od niego jeden handler), odmouseoverować już nie ;)Marcin Kubala edytował(a) ten post dnia 28.07.10 o godzinie 10:32
Kamil Szalewski

Kamil Szalewski myślę, projektuję i
staram się tworzyć

Temat: Warunek na podstawie mouseover

Piotr Lewandowski:
Pierwszy z brzegu przykład z dokumentacji:

$('#outer').mouseover(function() {
$('#log').append('<div>Handler for .mouseover() called.</div>');
});
no. :)

Bo muszę sprawdzić po jednej akcji czy myszka jest nad elementem i wtedy nic nie robić, a jeżeli jej nie ma, tylko jest gdzie indziej to podjąć działania :D
Bind w tym wypadku chyba też się nie sprawdzi?

Temat: Warunek na podstawie mouseover

Rozwiązanie 1)
$.offset() + wymiary elementu = pewien obszar
pewien obszar + pozycja kursora = to czego szukasz
// Uwaga - dawno tego nie stosowałem, ale pamiętam, że IE i Reszta inaczej przechowuje info o wymiarach, chodzi o użycie 2 metod, tzn. .height() i .width() lub (bodajże) .getElementWidth() i .getElementHeight().. //

Rozwiązanie 2)
bindnij element, ale nie w warunku, tak po prostu, niech handler dodaje jakąś klasę (i usuwa po opuszczeniu elementu). W warunku sprawdzaj klasę ($.hasClass()) tego konkretnego elementu (to lepsze niż zabawa w jakieś zmienne globalne, których musiałbyś trzymać tyle ile elementów).
Ten wariant podoba mi się o wiele bardziej, jest bardziej OOP like (w sensie sposobu myślenia) :)Marcin Kubala edytował(a) ten post dnia 28.07.10 o godzinie 10:41
Kamil Szalewski

Kamil Szalewski myślę, projektuję i
staram się tworzyć

Temat: Warunek na podstawie mouseover

Rozwiązanie 2, właśnie zacząłem to robić :D Myślałem, że jQuery jeszcze bardziej mnie zaskoczy takimi ifami jak przedstawiłem, no ale może w kolejnej wersji.

Pozdro i dzięki,
KamilKamil Szalewski edytował(a) ten post dnia 28.07.10 o godzinie 10:41
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: Warunek na podstawie mouseover

Czas jaki kursor jest nad elementem i podjęcie akcji

Ja bym podjął akcję... i Cię wykasował z tego forum :D

EDIT: i nie chodzi mi o to że zadaje banalne pytania i się uczy (to inna historia) ale o rozbijanie jednego problemu na 2 wątki. Żeby było jasne dlaczego się czepiam.Adam Pawliczek edytował(a) ten post dnia 28.07.10 o godzinie 12:34

konto usunięte

Temat: Warunek na podstawie mouseover

"Podsumowanie zawodowe:

xHTML, CSS, JS (z jQuery), PHP, MySQL, SQLite, wkręcam Pythona na Django, trochę C/C++ i Visual C++. Doświadczenie w projektowaniu interfejsów użytkownika. Wkręcam się w aplikacje desktopowe."

K***a, on nawet czytać nie potrafi, więc skąd takie podsumowanie?
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: Warunek na podstawie mouseover

Tak na marginesie: $(element).mouseover() wywołuje się tylko jeśli najedziesz myszą nad element. Znaczy się, automatycznie zwraca true.
Kamil Szalewski

Kamil Szalewski myślę, projektuję i
staram się tworzyć

Temat: Warunek na podstawie mouseover

Ale co w tych dwóch postach jest takie same? W tym, pytałem o to, czy da się zrobić if'a w którym gdy kursor jest na elemencie wywoła jedną akcję, a gdy go nie ma w ogole, nie tylko zjechal z elementu to wykona inną akcję. (wiedziałem o i używałem mouseover(), mouseout() i mouseleave()). I Odpowiedzi w tym wątku nie zdążyłem sprawdzić bo przechodząc do kolejnego problemu rozwiązałem go niszcząc jedną ze wcześniejszych, nieprzydatnych reakcji. Temat uznałem za zamknięty. Po czym założyłem wątek z nowym problem, mianowicie - czas jaki kursor jest nad elementem, aby zablokować możliwość odpalania akcji mouseover przy szybkim przejechaniu przez element.

Sam się wykasuję z tego forum Panie Adamie.

Pozdrawiam,
Kamil

Następna dyskusja:

Slider: progress bar + paus...




Wyślij zaproszenie do