Autor Zpráva
Hajaxa
Profil *
Zdravím,
V rychlosti popíšu problém. Potřebuji aby v případě platnosti podmínky se podmínka provedla do funkce.


V Jquery mám jednoduchou funkci:
(function($, window, document, undefined) {

  var name = "jPages",
      instance = null,
      defaults = {
        
        PolozekNaStranku: 36,
      
       
      };


Vytvořil jsem si podmínku.
Potřebuji následující: Pokud je aktuální stránka větší jak 1, změní PolozekNaStranku na hodnotu 60,

  if (this._aktulniPolozekNaStranku === 1 && page > 1) {
        
        



      }

Najde se někdo zkušenější, kdo by věděl, jak s tím? Díky moc.
_es
Profil
Hajaxa:
Píšeš nejako zmätene. Kde sa ten druhý kód nachádza, kedy je volaný? Nechápem, na čo sa pýtaš. Vlastnosť defaults.PolozekNaStranku môžeš predsa v tej funkcii zmeniť na ľubovolnú inú hodnotu.
preca1
Profil
Zdravim,
jestli sem to dobře pochopil: pokud je proměnná defaults viditelná
if (this._aktulniPolozekNaStranku === 1 && page > 1) {
  defaults.PolozekNaStranku = 60;
}
Pokud neni, budeš muset dodat víc kódu (kontext, v jakym se provádí ta podmínka).
Hajaxa
Profil
Bohužel to nefunguje, tak jak jsem chtěl. Fungujete jenom částečně. Nevěděl by někdo, jak s tím? Používám jPages (http://luis-almeida.github.com/jPages/)


  updateBtns : function(nav, page)
     {

if (this._currentPageNum > 2 ) {
         this.options.perPage = 60;
      }
      
         if (this._currentPageNum === 1 ) {
         this.options.perPage = 36;

      }

      if (page === 1) {
        nav.first.addClass("jp-disabled");
        nav.previous.addClass("jp-disabled");
      }
      if (page === this._numPages) {
        nav.next.addClass("jp-disabled");
        nav.last.addClass("jp-disabled");
      }
      if (this._currentPageNum === 1 && page > 1) {
        nav.first.removeClass("jp-disabled");
        nav.previous.removeClass("jp-disabled");
      }
        
      if (this._currentPageNum === this._numPages && page < this._numPages) {
        nav.next.removeClass("jp-disabled");
        nav.last.removeClass("jp-disabled");
      }
    },
_es
Profil
Hajaxa:
Absolútne ti nie je rozumieť, na čo sa pýtaš, ani čo má [#4] spoločné s [#1].

Fungujete jenom částečně.
Čo a ako má fungovať? O čo sa vlastne s tou JS knižnicou pokúšaš?
Hajaxa
Profil
_es:
Potřebuji, aby od stránky větší jak 2 se zobrazilo cca 60 položek. Na první straně by bylo pouze 36.
_es
Profil
Hajaxa:
Skús pohľadať v dokumentácii tej knižnice: luis-almeida.github.com/jPages/documentation.html
Asi tu nenájdeš nikoho, kto by ju kvôli tebe študoval.
O čo sa pokúšaš metódami addClass a removeClass? Ak očakávaš, že na to tá knižnica okamžite zareaguje, tak nie. Použi metódy tej knižnice.
Hajaxa
Profil
_es: Dokumentaci jsem prohledal již v samotném začátku, nemusíš mít obavy ;)

Nakonec jsem tam přidal několik podmínek, funguje to, funkčně to není na špatně, ale nemůžu tam najít jednu menší chybku.
Popis chyb Na první straně se zobrazí 36 položek (to je dobře). Pokud přejdu na ostatní stránky, zobrazí se 60 položek (to je dobře). Pokud se například z druhé stránky vrátím na první zobrazí se 60 položek (zde je chyba, má se zobrazit 36 položek).


(
(function($, window, document, undefined) {
 
  var name = "jPages",
      instance = null,
      defaults = {
        
        perPage: 36,
      
       
      }

  if (page === 1) {
           this.options.perPage = 60;
$('div#foo').css('background', 'blue');
      }
      if (page === this._numPages) {
        this.options.perPage = 60;
$('div#foo').css('background', 'red');
      }
      if (this._currentPageNum === 1 && page > 1) {
        this.options.perPage = 60;
$('div#foo').css('background', 'green');
      }
      
     
    
      if (this._currentPageNum = 1) {
      this.options.perPage = 36;
$('div#foo').css('background', 'black');
      }
_es
Profil
Hajaxa:
Zo zbežného pohľadu do dokumentácie tipujem, že ti asi treba použiť vlastnosť callback. Z nejakých vytrhnutých kusov kódu ti asi nikto neporadí.
Hajaxa
Profil
_es: Nejsem si přesně jist, zda vlastnost callback bude řešením tohoto problému.

Chyba je někde přímo v podmínce, nemohu ji ale najít. Zkoušel jsem již toho opravdu hodně.

Pokud někdo ví, jak tento problém řešit, budu jenom rád ;)
joe
Profil
Pokud ti nevadí úpravy přímo v pluginu (což ai zřejmě ne, když už ukazuješ úpravy i tady v diskusi), pak ti nepomůže funkce updateBtns, ale funkce paginate, updateItems nebo getItemRange, kterou můžeš upravit takto

Takže například toto by mělo splňovat to, co chceš:

    getItemRange : function(page) {
      var range = {};
      if (page > 1) {
        this.options.perPage = 60;
      } else {
        this.options.perPage = 36;
      }
      range.start = (page - 1) * this.options.perPage;
      range.end = range.start + this.options.perPage;
      if (range.end > this._items.length) range.end = this._items.length;
      return range;
    },
Hajaxa
Profil
joe: Díky moc, funguje to bezvadně.

Když se na to dívám zpětně, už ani nevím, proč jsem to dělal tak složitě, když to jde udělat pomocí jednoho zápisu.

Ještě jednou velké díky!

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0