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

Rekurencja - jQuery

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 7 listopada 2017 w JavaScript przez lastavenger Obywatel (1,060 p.)
var act = 1;
var limit = 4;
$(document).ready(function() {
   timer2 = setInterval(auto, 3000); 
});

$("#right").on("click", function() {
    act++;
    if (act > limit){
        act = 1;
    }
    console.log(act);
    clearTimeout(timer2);
    change();
});
$("#left").on("click", function() {
    act--;
    if (act < 1){
        act = limit;
    }
    console.log(act);
    clearTimeout(timer2);
    change();
});

function auto() {
    act++;
    if (act > limit){
        act = 1;
    }
    console.log(act);
    change();
};
$("#1").on("click", function () {
    act = 1;
    clearTimeout(timer2);
    change();
});
$("#2").on("click", function () {
    act = 2;
    clearTimeout(timer2);
    change();
});
$("#3").on("click", function () {
    act = 3;
    clearTimeout(timer2);
    change();
});
$("#4").on("click", function () {
    act = 4;
    clearTimeout(timer2);
    change();
});
           
function change() {
    if (act == 1){
        $(".slides").animate({
        marginLeft: "0px"
    },800);
    }
    else if (act == 2){
        $(".slides").animate({
        marginLeft: "-640px"
    },800);
    }
    else if (act == 3){
        $(".slides").animate({
        marginLeft: "-1280px"
    },800);
    }
    else if (act == 4){
        $(".slides").animate({
        marginLeft: "-1920px"
    },800);
    }
}

Witam

Napisałem kod do slidera, bardzo fajnie działa, więc nie chce w nim nic zmieniać, ale mam problem... strasznie dużo jest w nim powtórzeń, czy macie pomysł jak go poprawić ?

1 odpowiedź

0 głosów
odpowiedź 7 listopada 2017 przez rafal.budzis Szeryf (85,260 p.)
wybrane 7 listopada 2017 przez lastavenger
 
Najlepsza

W funkcji change na IFie robisz zmniejszanie wartości o 640px co skok. Ja bym radził to zmienić na funkcje która to obliczy. Na początku funklcji dodaj liczenie:
 

var margin = (act * -640) + "px";



potem wystarczy jedno wywołanie


$(".slides").animate({
        marginLeft: margin
},800);


Natomiast odnośnie kodów
 

$("#1").on("click", function () {
    act = 1;
    clearTimeout(timer2);
    change();
});



Należy zwrócić uwagę iż różną się tylko wartością przypisywaną do act oraz wartośc przypisywana do act jest taka sama jak ID elementu. Dlatego też myśle ze dobrym rozwiązaniem jest przypisanie act wartości ID klikniętego elementu. Zrobisz to za pomocą.
 

act = $(this).attr("id");



Następnie wystarczy zmodyfikować selektor "#1" aby uwzględnić wszystkie elementy "#1, #2, #3".

komentarz 7 listopada 2017 przez lastavenger Obywatel (1,060 p.)
Wszystko zrozumiane dzięki wielkie za porady i już się za to zabieram :D

Podobne pytania

0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 14 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)
0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 10 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)
+2 głosów
1 odpowiedź 229 wizyt
pytanie zadane 10 maja 2022 w Rozwój zawodowy, nauka, praca przez maxkolanko1998 Gaduła (3,230 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...