• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jQuery, toggleClass

Object Storage Arubacloud
0 głosów
362 wizyt
pytanie zadane 23 maja 2017 w JavaScript przez Blue Obywatel (1,180 p.)

Witam, próbuję napisać grę w kółko i krzyżyk, ale mam pewien problem. Chciałbym, żeby po najechaniu kursorem na któreś pole zmieniało ono kolor, a po odjechaniu wracało do poprzedniego stanu. Stworzyłem odpowiednie klasy w CSS i do pliku JavaScript dodałem taki kod:

$(document).ready(function() {
    $('.field').click(function() {
        $('.field').toggleClass('field-active');
    });
});

Potem dodałem jeszcze

var field = document.getElementsByClassName("field");

i w pętli chciałem wykonać podobne operacje dla poszczególnych elementów tak, by tylko one zmieniały kolor. Tylko że nie wiem jak to zrobić. Proszę o pomoc.

4 odpowiedzi

+1 głos
odpowiedź 23 maja 2017 przez ProgramistaStepek Nałogowiec (27,020 p.)

żeby po najechaniu kursorem na któreś pole zmieniało ono kolor

Skoro chcesz aby po najechaniu zmieniało kolor użyj funkcji .hover(f1,f2) lub .mouseenter(f1) i .mouseleave(f2), gdzie f1 to funkcja, która wykona się po najechaniu na pole, a f2 to funkcja, która wykona się po opuszczeniu pola.

komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)

Coś takiego?

var field = document.getElementsByClassName("field");

var i = 0;
while (i < field.length) {
    field[i].mouseenter(function() {
        field[i].classList.add("field-active");
    });
    field[i].mouseleave(function() {
        field[i].classList.remove("field-active");
    });
    ++i;
}

 

komentarz 23 maja 2017 przez ProgramistaStepek Nałogowiec (27,020 p.)
Mniej więcej o to chodzi
komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)
OK, dzięki. Teraz tylko muszę znaleźć błąd (w JS mam tylko te linie). Mógłby ktoś pomóc?
komentarz 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)
musisz dodać EventListenera
obiekt.addEventListener("mouseover", skrypt);
komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)
var field = document.getElementsByClassName("field");

var i = 0;
while (i < field.length) {
    field[i].addEventListener('mouseover', function() {
        field[i].classList.add("field-active");
    });
    ++i;
}

Coś jeszcze nie działa :(

komentarz 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)

Kurczę nie w ten sposób, przepraszam, źle powiedziałem. Najprościej to będzie zrobić przy pomocy jquery.
 

var x = document.getElementsByClassName("field");

$(x).hover(function(){
    $(this).addClass("klasa");
    }, function(){
    $(this).removeClass("klasa");
});

co sądzisz ?

komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)

Dziękuję za to, że poświęcacie mi czas. Sam już nie wiem, w pliku JS mam to:

var x = document.getElementsByClassName("field");
 
$(x).hover(function(){
    $(this).addClass("field-active");
    }, function(){
    $(this).removeClass("field-active");
});

w CSSie jeszcze to:

.field {
    transition: background-color 1s ease;
}

.field-active {
    background-color: chartreuse;
}

Wciąż coś nie działa. 

komentarz 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)
Nie ma sprawy, jak narazie niewiele się przydałem xD. Musisz podlinkowac biblioteke jquerry do tego, wiesz jak to zrobić ?
komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)
OK, jestem głupi. Zapomniałem dodać document.ready na początku. Naprawdę bardzo dziękuję wszystkim za udzieloną pomoc i przepraszam.
komentarz 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)
Nie ma sprawy, po to jest forum by sobie pomagac ^^. Oj uwierz robiłem głupsze błędy, wczoraj np. 20 minut zasatanawiałem się czemu nie mam interakacji z lementem gdy na niego najeżdżam, a okazało się, że klase wpisałem po prostu w inny element na który myszką nie natrafiałem, takżeeee no różnie to bywa xD. 200 linijek kodu vs jeden opuszczony średnik.
+1 głos
odpowiedź 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)

Nie jest to najlepszy sposób, ale działa łap CodePena.

Generalnie używając jquerry wystarczy, że się posłużysz metodą "hover"

 

$("element").hover(function(){
//co sie dzieje po najechaniu (gdy myszka jest na elemencie)
}.function(){
// w jakim jest stanie po zabraniu myszki z elementu
});

 

+1 głos
odpowiedź 23 maja 2017 przez kubaapk Nałogowiec (44,270 p.)
Skoro chcesz przy najechaniu kursorem zmieniać tylko kolor kafelka, to w ogóle JS nie jest tutaj potrzebny, ogarnij to sobie :hover w cssie.
komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)
Tylko problem polega na tym, że chciałbym, aby podświetlały się na różne kolory, to znaczy przy ruchach jednego gracza na niebiesko, a przy ruchach drugiego na czerwono. Nie wiem, czy w CSSie da się coś takiego zrobić, pierwsze co mi przyszło do głowy to JS.
komentarz 23 maja 2017 przez OfftheCode Gaduła (4,050 p.)

możesz podzielić hover dla różnnych elementów, np dla parzystych i nieparzystych w ten sposób rozwiążesz problem dla 2 osób np.
 

.klasa:nth-child(odd){
background: red;
}

.klasa:nth-child(even){
background: yellow;
}

Jeżeli zależy Ci na js to zobacz tego Pena

+1 głos
odpowiedź 23 maja 2017 przez pablop76 VIP (123,180 p.)
edycja 23 maja 2017 przez pablop76
Witam. A dlaczego nie :hover w css?
komentarz 23 maja 2017 przez Blue Obywatel (1,180 p.)
Ze zwykłej ciekawości :)
komentarz 23 maja 2017 przez pablop76 VIP (123,180 p.)
To jeszcze pomyśl o zabezpieczeniu przed wielokrotnym ruchem tego samego gracza.

Podobne pytania

0 głosów
0 odpowiedzi 259 wizyt
pytanie zadane 24 listopada 2017 w JavaScript przez svyatogor92 Użytkownik (670 p.)
0 głosów
1 odpowiedź 110 wizyt
pytanie zadane 14 kwietnia 2018 w JavaScript przez Rash Użytkownik (620 p.)
0 głosów
1 odpowiedź 143 wizyt
pytanie zadane 24 kwietnia 2016 w JavaScript przez Łukasz Rząsa Użytkownik (830 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...