Wpis z mikrobloga

Mircy z #javascript i #jquery, no i ogólnie #webdev. Mam problem z przewijanym tekstem... Mam zrobiony widok, do którego za pomocą Ajax'a ładuję widok częściowy, zawierający tekst do przewijania. Samo to działa ok. Projekt jednak wymaga bym załadował kilka takich widoków częściowych (niektóre zawierają obrazy zamiast tekstu) na raz... i tu się zaczynają schody, bo albo raz działa, raz nie działa. Czasem wcale nie działa, a momentami działa ale straszliwie się dławi i wiesza przeglądarkę.

Jako, że znacznika marquee już się nie używa, to prawilnie zastosowałem plugin jquery https://github.com/aamirafridi/jQuery.Marquee. Nie jestem biegły w javascripcie, ale nie oczekuję gotowego rozwiązania tylko naprowadzenie - co mogę robić nie tak ? Próbowałem korzystać ze wskazówki autora pluginu odnośnie ładowania Ajaxem, ale problem nie ustąpił.

Widok częściowy zawiera div klasy marquee z parametrami (duration, gap etc.), takich divów w tym widoku jest kilka. Widoków częściowych jest 20. Jeżeli użyję $('.marquee').marquee(); w widoku podstawowym / layoucie to nic się nie dzieje (no treść ładowana dynamicznie, to chyba nie ma dostępu - tu też nie wiem jak sobie poradzić). Natomiast jeśli wywołam to marquee w widoku częściowym no to wszystko muli (pewnie przez to, że wywołuje to po 20 razy dla kilku znaczników na raz). ( ͡° ʖ̯ ͡°)

Mniej więcej wygląda to tak :

Widok główny

...

.....

$(document).ready(function () {

for(var i=0; i<20; i++){
update(i);
}

function update(numb){
$.ajax({
async:true,
cache:false,
contentType: "html",
url: "/Home/Partial"
}).done(function (response) {
$('#content' + numb).html(response);
});
}

});

Widok częściowy

...
Test
...

$(document).ready(function () {

$('.marquee').marquee();

});
  • 8
@StronaGlowna: ja miałem niedawno nieco podobny problem (czy wszystkie dane zostały dodane do bazy danych - poprzez wywołania AJAX). Pobierz jakoś wartość o tym, ile oczekujesz załadowanych wyników oraz zainicjuj zmienną o liczbie widoków załadowanych. Po poprawnym (może także niepoprawnym?) załadowaniu zwiększ licznik i sprawdź, czy pokrywa się z wartością oczekiwaną. Jeśli się pokrywa, to $('.marquee').maqruee(); w kodzie .done(funkcja)
czy pokrywa się z wartością oczekiwaną. Jeśli się pokrywa, to $('.marquee').maqruee(); w kodzie .done(funkcja)


@p98: Nie pokrywa się, bo tak jak kolega niżej pisał

Przypadkiem pętla nie wykonuje się szybciej od ajaxa?


( ͡° ʖ̯ ͡°)

@Eggy: (function(e) { update(e) }(i)); nie działa w ogóle :/ , ale faktycznie pętla szybciej się kończy niż ajax.

Polecicie jakieś narzędzie do znalezienia przyczyny tego cudactwa co się narobiło?
@Eggy: nie no tyle to kojarze ( ) 0 błędów, wszystko niby ok... najgorsze, że jak wrzucę to marquee w widok częśćiowy to przewija , ale cholernie muli tak jakby coś się albo zapętliło, albo x razy chce dodać funkcję do znaczników ( ͡° ʖ̯ ͡°)