Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Ta sama pozycja w Kolekcja.get(x) po przeniesieniu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
starach
Cześć,

Kod
this.goToNextSlides = function()
    {
      for($i = 0; $i < $ths.getVisibleSlidesAmount(); $i++)
      {
        console.log($i + ' : ' + $('.title', $Opts.Slides.get($i)).html());
        $Slide = $($Opts.Slides.get($i));
        $SlideClone = $Slide.clone();
        $Slide.remove();
        $Opts.SlidesContainer.append($SlideClone);
      }
    }
Funkcja za każdym razem operuje na tych samych elementach mimo, że przenosze je na jej koniec. Jak zresetować ich ( hmmm ) wskaźniki?

Cytat
slideshow.js:32 0 : Tytuł 1
slideshow.js:32 1 : Tytuł 2
slideshow.js:32 2 : Tytuł 3
slideshow.js:32 3 : Tytuł 4
slideshow.js:32 0 : Tytuł 1
slideshow.js:32 1 : Tytuł 2
slideshow.js:32 2 : Tytuł 3
slideshow.js:32 3 : Tytuł 1

A powinno być
Cytat
slideshow.js:32 0 : Tytuł 1
slideshow.js:32 1 : Tytuł 2
slideshow.js:32 2 : Tytuł 3
slideshow.js:32 3 : Tytuł 4
slideshow.js:32 0 : Tytuł 5
slideshow.js:32 1 : Tytuł 6
slideshow.js:32 2 : Tytuł 7
slideshow.js:32 3 : Tytuł 8
wookieb
Ale nie wiemy co robi reszta twoich metod w kodzie, więc co możemy powiedzieć?
starach
Jakby miały one jakiekolwiek znaczenie to bym je podał, ale niech będzie.

Kod
(function($)
{
  $.fn.slideshow = function($Options)
  {
    var $ths = this,
        $Defs = {Prev : $('.prev', this),
                 Next : $('.next', this),
                 Slides : $('.slides ul li', this),
                 SlidesContainer : $('.slides ul', this),
                 Display : $('.slides', this),
                 bAnimating : false};
        $Defs.iSlideWidth = parseInt($Defs.Slides.first().width(), 10);
        $Defs.iSlideMarginL = parseInt($Defs.Slides.first().css('margin-left'), 10);
        $Defs.iSlideMarginR = parseInt($Defs.Slides.first().css('margin-right'), 10);
        $Defs.iDisplayWidth = parseInt($Defs.Display.first().width(), 10);
    var $Opts = $.extend($Defs, $Options);

    this.getVisibleSlidesAmount = function() {return Math.floor($Opts.iDisplayWidth / ($Opts.iSlideMarginL + $Opts.iSlideMarginR + $Opts.iSlideWidth));}
    this.getHiddenSlidesAmountLeft = function(){return Math.floor(parseInt($Opts.SlidesContainer.css('left'), 10) / ($Opts.iSlideMarginL + $Opts.iSlideMarginR + $Opts.iSlideWidth));}
    this.getHiddenSlidesAmountRight = function(){return $Opts.Slides.length - (this.getVisibleSlidesAmount() + this.getHiddenSlidesAmountLeft());}
    
    $Opts.iWidthDisplayedSlides = ($Opts.iSlideMarginL + $Opts.iSlideMarginR + $Opts.iSlideWidth) * $ths.getVisibleSlidesAmount();
    
    this.goToPrevSlides = function()
    {
      alert('prev');
    }
    this.goToNextSlides = function()
    {
      for($i = 0; $i < $ths.getVisibleSlidesAmount(); $i++)
      {
        console.log($i + ' : ' + $('.title', $Opts.Slides.get($i)).html());
        $Slide = $($Opts.Slides.get($i));
        $SlideClone = $Slide.clone();
        $Slide.remove();
        $Opts.SlidesContainer.append($SlideClone);
      }
    }
    $Opts.Prev.click(this.goToPrevSlides);
    $Opts.Next.click(this.goToNextSlides);
    return this;
  }
})(jQuery);


edit:
Dobra już doszedłem do tego na czym mój błąd polegał. Pobieram $i za każdym razem nawet jak już zmieniłem kolejność.
wookieb
Powiedz mi, dlaczego (i jak) metoda $Opts.Slides.get($i) ma się domyślić, że raz dla parametru 0 ma zwrócić "Tytuł 1" a raz "Tytuł 5"?
Z tego wynika jasno, że masz źle napisany kod (w którym miejscu nie wiem, nie wnikam, bo nie wiem co to ma dokładnie robić).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.