[ajax] zmiana zawartości diva


(hoobert) #1

Witam,

czy istnieje możliwość, aby zmienić zawartość diva, poprzez odnośniki, które znajdują się wewnątrz niego?

Załóżmy jest sytuacja:

Odnosnik 1Odnosnik 2
[/code] i teraz kod js (z wykorzystaniem jQuery):
[code] $(div#main>'a').click(function(event){ event.preventDefault(); $('div#main').html(' ajax-loader.gif

i sprawa wygląda tak, że jak te odnośniki są po za tym divem to załadowanie treści to nie jest żaden problem, natomiast jak znajdują się wewnątrz niego, to strona się przeładowuje i wczytuje się to co jest w odnośniku, natomiast nie w tym divie, tylko w nowym oknie.

Czy ktoś ma jakieś propozycje?

Z góry dzięki.

Pozdrawiam, hoobert.


(Drobok) #2

Ogólnie ładujesz href z linka, którego wywaliłeś przez loader :slight_smile:

Zapisz go na począteku, a potem go użyj np tak:

$('div#main>a').click(function(event){

    var tmp=$(this).attr('href');

    event.preventDefault();

    $('div#main').html('');

    $('div#main').load(tmp);

});[/code]

(tridex) #3

Może zrób tak jak tu: http://gachowy.pl/2011/02/17/proste-lad ... ca-jquery/

i potem

Odnosnik 1Odnosnik 2
[/code]

Powinno działać, ale głowy nie daje.


(hoobert) #4

Dzięki za pomoc, ale inaczej. Teraz też to testowałem i myślałem, że to nie będzie miało znaczenia, dlatego o tym nie pisałem - ale jednak.

Mam link który prowadzi do akcji gdzie wyświetlana jest lista użytkowników:

[/code]

(Drobok) #5

Pomijając fakt hfef, pewnie masz tego linka w jakimś divie, a selektor dotyczy tylko potomków. Reasumując:

$('div#main a')

Zamiast:

$('div#main>a')

Oczywiście będzie to dotyczyło wszystkich linków w divie (poprzednie dotyczyło tylko potomków(nie będących wewnątrz innych elementów)). Rozwiązanie takie ma swoje wady, ale tylko takie jestem w stanie zaproponować znając tylko link i twój problem.


(hoobert) #6

Pomijając, bo ja to pisałem z pamięci, więc mogłem zrobić literówkę. W tym skrypcie również całość jest w apostrofie. W przeciwnym razie firebug by pewnie się o to upominał. Twoje rozwiązanie niestety również tutaj nie skutkuje. Pod linkiem http://twojafir.webd.pl/ajax jest plik z tym projektem. Mam tutaj na myśli, aby cały czas wczytywały się te linki w tym divie.

Z góry dzięki za pomoc.

Pozdrawiam.

Edit.

Przejrzałem jeszcze raz Twój sposób tridex i działa tak jak chciałem :slight_smile:

Dzięki za pomoc.

Pozdrawiam.


(tridex) #7

Cieszę, że pomogłem. Przynajmniej wiem, że nie jestem taki tępy kiedy to nie mam pojęcia o JS, jQuery czy tam Ajax'ie. Dzięki temu sam zacznę stosować powyższe rozwiązanie w swoich stronach :slight_smile: XD


(Johny1000) #8

(Drobok) #9

Ta funkcja ładuje do diva $main. Zawartości linka, który jest wynikiem funkcji url_for z danym argumentem.


(Johny1000) #10

Dzieki za odpowiedź.

Mam taki mały problem:)

Wyświetliłem sobie za pomocą powyższych skyptów na stronie index.php w divie(id="jeden") stronę podstrona.php. Na podstrona.php jest opcja dodawania pliku. Kiedy klikam przycisk submit chciałbym aby zmiana strony, następowała w divie(id="div_podstrony") na stronie podstrona np w czasie dodawania zdjecia na serwer pokazywał sie loader. Da się cos takiego zrobic?? Coś podobnego jest na fb tylko tam nie ma submita.

Przetestowałem action=index.php ale niestety wtedy odswieza sie cała strona index. Nie mam pomysłu jak to zrobic. W internecie też nie znalazłem zadnej metody.


(Grzesie K) #11

jQuery submit() oraz post()