Mam tu mały problem: mam następujące funkcje js:

function setRounded(divId){
    $(divId).addClass("rounded-corners");
}
function unsetRounded(divId){
    $(divId).removeClass("rounded-corners");
}

Te dwie funkcje są wywoływane przed i po zdarzeniu: na przykład mam następującą stronę:Strona testowa i chcę usunąć zaokrąglone rogi, gdy odwracam blok, ale tak się nie dzieje. Czy jest jakaś metoda odświeżania? Trochę wytrzeszczyłem oczy, ale nic podobnego.

Pozdrawiam, Sorinie!

2
Badea Sorin 25 sierpień 2011, 02:20
Twój kod robi dokładnie to, co mu każesz. Musisz usunąć zaokrąglone rogi, a następnie odwrócić pudełko, a następnie ponownie dodać zaokrąglone rogi. Proszę wyjaśnić, czego oczekujesz.
 – 
Liam Bailey
25 sierpień 2011, 02:26
Czy możesz dokładniej wyjaśnić, jak to się nazywa?
 – 
Nachshon Schwartz
25 sierpień 2011, 02:26
Mogą to być problemy z przeglądarką: w firefoxie nigdy nie widzę, by rogi były kwadratowe. Klasa jest usuwana dopiero po zakończeniu animacji, a następnie natychmiast dodawana z powrotem.
 – 
Bobby Jack
25 sierpień 2011, 02:29
W rzeczywistości w firefox zarówno usuwanie, jak i dodawanie mają miejsce, a ponowna aplikacja ma miejsce po pojawieniu się obrazu. Jeśli ustawisz punkty przerwania w obu metodach uzbrojenia/rozbrajania, zobaczysz, że w rzeczywistości obie są uderzane, a rogi są usuwane. Możesz zobaczyć, czy we wtyczce Flip jest ustawienie szybkości animacji, aby spowolnić działanie.
 – 
scrappedcola
25 sierpień 2011, 02:29
Tylko lewy róg jest kwadratowy. Prawy wierzchołek pozostaje okrągły, co oznacza prawdopodobnie niedopasowanie klas lub niedopasowanie divów?
 – 
griegs
25 sierpień 2011, 02:30

2 odpowiedzi

Najlepsza odpowiedź

Twój kod jest prawie poprawny, w rzeczywistości klasa została usunięta z div. Jednak wtyczka flip wydaje się tworzyć kopię div, aby stworzyć efekt odwracania, a ta kopia div nadal ma klasę.

Możesz spróbować usunąć klasę przed wywołaniem .flip, zamiast używać onBefore.

2
Simone Gianni 25 sierpień 2011, 02:30
Nie ma za co. Proponuję użyć wbudowanego debuggera javascript Firebug lub Chrome. Umieściłem punkt przerwania na linii z removeClass, a następnie wykonałem go i obserwowałem w zakładce HTML/CSS, dlaczego div nadal ma ramki i zauważyłem kopię div.
 – 
Simone Gianni
25 sierpień 2011, 02:42

Zachowuje się bardzo niespójnie w Firefoksie 6.0. Czy próbowałeś zmienić:

$("#aboutMe").click(function(){
    $("#aboutMe").flip({
         onBefore:function(){
             unsetRounded("#aboutMe"); 
             return;
         },
         ...
    });
 });

Do:

$("#aboutMe").click(function(){
    unsetRounded("#aboutMe");
    $("#aboutMe").flip({
        ...
    });
 });
1
Bobby Jack 25 sierpień 2011, 02:31
Rozwiązałem problem za pomocą $("#aboutMe").removeClass("zaokrąglone rogi").flip({[...]});
 – 
Badea Sorin
25 sierpień 2011, 02:35
1
To jest lepszy sposób – myślę, że myślałem, że jesteś przywiązany do swojej funkcji „unsetRounded” :-)
 – 
Bobby Jack
25 sierpień 2011, 02:37