Thread View: pl.comp.lang.javascript
5 messages
5 total messages
Started by Slawek-L
Mon, 30 Aug 2010 07:30
Automatyczne dzielenie tekstu na strony
Author: Slawek-L
Date: Mon, 30 Aug 2010 07:30
Date: Mon, 30 Aug 2010 07:30
37 lines
2516 bytes
2516 bytes
Witam, Robię projekt z wykorzystaniem jquery ui i wymyśliłem sobie, że treść na stronie będzie prezentowana za pomocą elementu Tabs - czyli zakładek. I tu pojawia się pewien problem. Treść będzie pochodziła prawdopodobnie z jakiegoś CMS-a i będzie wprowadzana przez jakiegoś laika. A żeby zakładki funkcjonowały poprawnie treść musi być podzielona na strony za pomocą elementu div czyli: <div id="tabs"> <div id="tabs-1>Treść pierwszej zakładki</div> <div id="tabs-2>Treść drugiej zakładki</div> </div> itd. Chciałbym żeby cms dostarczył treść zawartą w jednym elemencie div, a podział na zakładki chciałbym wykonać po stronie przeglądarki. Kombinuje w ten sposób: Dostaję z serwera plik z jakimś ukrytym elementem div w którym zawarty jest cały tekst. W JS pobieram zawartość tego elementu za pomocą funkcji children(), potem wykonuję konwersje tego zbioru na tablicę ( makeArray() ). Następnie w pętli kopiuje kolejne elementy tablicy z powrotem do jakiegoś innego div-a i po każdym elemencie sprawdzam czy ten docelowy div ma już odpowiednią wysokość ( outerHeight , jeśli tak to kopiuje ten tekst do zakładki itd. Czy to ma szansę działać? I czy nie ma jakiegoś innego prostszego i szybszego sposobu? Boję się, że jeśli trafi się np. jakiś dłuższy paragraf tekstu to procedura się posypie. Pozdrawiam Sławek-L
Re: Automatyczne dzielenie tekstu na strony
Author: Slawek-L
Date: Wed, 01 Sep 2010 11:15
Date: Wed, 01 Sep 2010 11:15
43 lines
2580 bytes
2580 bytes
W dniu 2010-08-30 09:30, Slawek-L pisze:
> Witam,
Sam sobie odpowiem. :) Może komuś się przyda.
function splitToTabs(fromDiv, tabsDiv, tmpDiv, tabHeight)
{
var tabIndex = 1;
var contentArray = new Array;
var contentIndex =0;
contentArray = jQuery.makeArray( $(fromDiv).contents().clone() );
while ( contentIndex < contentArray.length )
{
$(tmpDiv).append( contentArray[contentIndex] );
contentIndex++;
if ( $(tmpDiv).outerHeight() > tabHeight )
{
contentIndex--;
contentArray[contentIndex] = $(tmpDiv).contents().last();
$("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
tabIndex++;
$(tabsDiv).tabs('add', '#tabs-'+tabIndex,tabIndex.toString());
$(tmpDiv).contents().remove();
}
}
if ( $(tmpDiv).contents() != null )
{
$("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
}
}
Działa mniej więcej tak: we fromDiv jest treść do podzielenia,
tabsDiv to element w którym będą zakładki, a tmpDiv to
tymczasowy div służący do przerzucania treści.
tabHeight to wysokość zakładki. Jeśli ta wysokość zostanie przekroczona
to zostaje utworzona kolejna zakładka i ciąg dalszy jest wrzucany do
następnych zakładek. tmpDiv musi mieć taką samą szerokość jak docelowa
kolumna tekstu.
Pozdrawiam
Sławek-L
Re: Automatyczne dzielenie tekstu na strony
Author: Peter May
Date: Wed, 01 Sep 2010 18:58
Date: Wed, 01 Sep 2010 18:58
46 lines
2438 bytes
2438 bytes
W dniu 2010-09-01 13:15, Slawek-L pisze:
> W dniu 2010-08-30 09:30, Slawek-L pisze:
>> Witam,
>
> Sam sobie odpowiem. :) Może komuś się przyda.
>
>
> function splitToTabs(fromDiv, tabsDiv, tmpDiv, tabHeight)
> {
> var tabIndex = 1;
> var contentArray = new Array;
> var contentIndex =0;
> contentArray = jQuery.makeArray( $(fromDiv).contents().clone() );
>
> while ( contentIndex < contentArray.length )
> {
> $(tmpDiv).append( contentArray[contentIndex] );
> contentIndex++;
> if ( $(tmpDiv).outerHeight() > tabHeight )
> {
> contentIndex--;
> contentArray[contentIndex] = $(tmpDiv).contents().last();
> $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
> tabIndex++;
> $(tabsDiv).tabs('add', '#tabs-'+tabIndex,tabIndex.toString());
> $(tmpDiv).contents().remove();
> }
> }
> if ( $(tmpDiv).contents() != null )
> {
> $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
> }
> }
>
> Działa mniej więcej tak: we fromDiv jest treść do podzielenia,
> tabsDiv to element w którym będą zakładki, a tmpDiv to
> tymczasowy div służący do przerzucania treści.
> tabHeight to wysokość zakładki. Jeśli ta wysokość zostanie przekroczona
> to zostaje utworzona kolejna zakładka i ciąg dalszy jest wrzucany do
> następnych zakładek. tmpDiv musi mieć taką samą szerokość jak docelowa
> kolumna tekstu.
I wszystko dobrze, poza tym, że do tego jQuery wcale nie jest potrzebne :P
--
Peter
Re: Automatyczne dzielenie tekstu na strony
Author: Slawek-L
Date: Thu, 02 Sep 2010 08:09
Date: Thu, 02 Sep 2010 08:09
12 lines
1461 bytes
1461 bytes
W dniu 2010-09-01 20:58, Peter May pisze: > > I wszystko dobrze, poza tym, że do tego jQuery wcale nie jest potrzebne :P > Niby nie, ale i tak ten jQuery miałem podczepiony, poza tym dopiero zaczynam zabawę jQuery wiec jest okazja żeby go sobie poćwiczyć :). Pozdrawiam /Sławek-L
Re: Automatyczne dzielenie tekstu na strony
Author: Witold Szczerba
Date: Sun, 24 Oct 2010 16:44
Date: Sun, 24 Oct 2010 16:44
42 lines
3153 bytes
3153 bytes
On Aug 30, 9:30 am, Slawek-L <Slawek-L@localhost> wrote: > Witam, > Robię projekt z wykorzystaniem jquery ui i wymyśliłem > sobie, że treść na stronie będzie prezentowana za pomocą > elementu Tabs - czyli zakładek. > I tu pojawia się pewien problem. Treść będzie pochodziła > prawdopodobnie z jakiegoś CMS-a i będzie wprowadzana przez > jakiegoś laika. > A żeby zakładki funkcjonowały poprawnie treść musi być podzielona na > strony za pomocą elementu div czyli: > <div id="tabs"> > <div id="tabs-1>Treść pierwszej zakładki</div> > <div id="tabs-2>Treść drugiej zakładki</div> > </div> > itd. > Chciałbym żeby cms dostarczył treść zawartą > w jednym elemencie div, a podział na zakładki > chciałbym wykonać po stronie przeglądarki. > > Kombinuje w ten sposób: > Dostaję z serwera plik z jakimś ukrytym > elementem div w którym zawarty jest cały tekst. > W JS pobieram zawartość tego elementu > za pomocą funkcji children(), potem > wykonuję konwersje tego zbioru na > tablicę ( makeArray() ). > Następnie w pętli kopiuje kolejne elementy > tablicy z powrotem do jakiegoś innego div-a > i po każdym elemencie sprawdzam czy ten docelowy div > ma już odpowiednią wysokość ( outerHeight , jeśli tak to > kopiuje ten tekst do zakładki itd. > Czy to ma szansę działać? > I czy nie ma jakiegoś innego prostszego i szybszego > sposobu? Boję się, że jeśli trafi się np. jakiś dłuższy > paragraf tekstu to procedura się posypie. > > Pozdrawiam > Sławek-L To ja się jeszcze tylko zapytam: po co takie coś? Jakoś nie widzę sensu dzielenia na zakładki treści tylko dlatego, że się nie mieści w pionie - od tego jest właśnie pasek przewijania...
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads