Autor Zpráva
barneby
Profil
Dobrý den,
Mám ten script:

$(function() {
      $(".page-link").click(function() {
       var page = $(this).attr("menu-link");
       var dataString = 'page='+ page;
  
        $.ajax({
          type: "POST",
          url: "app/page_loader.php",
          data: dataString,
          cache: false,

           beforeSend: function(){
             NProgress.start();
           },

           success: function (html) { 
             $('#pageContent').html(html);
             NProgress.inc();
             $('#pageContent').fadeIn('slow');   
           },

           complete: function(){
             NProgress.done();
           }
   
        });
        return false;
      });
     });

Dělá to že mi načte načte pomocí ajaxu obsah do ,,#pageContent" problém je v tom že načítá pouze čisté html na které se po načtení navážou css soubory v indexu ale už se nenačítá JS.. Teda když tam mám nějakou funkci která vyžaduje JS soubor který je v indexu tak se mi nenačte jako css naopak se nenačte vůbec..
Dá se nějak udělat aby tento script načítal i JS jako se načítá CSS? Potřebuju nějakou include pro JS.
Děkuji.

Moderátor juriad: Obnoveno poté, co dotaz barneby nahradil slovem „vyřešeno“ na žádost Petra ZZZ.
juriad
Profil
Mám dojem, že barneby navázal událost na nějaké elementy. Zkusím to trochu zjednodušit a vynechat ten AJAX.
$(document).ready(function() { // při načtení stránky
  // přidá všem elementům se třídou tlacitko v aktuálním dokumentu posluchače události click, který zobrazí text "stisknuté!"
  $('.page-link').click(function() {alert('stisknute!');});
});

Pokud se ale později přidá další tlačítko, třeba:
setTimeout(function() { // po sekundě od načtení stránky
  // přidá tlačítko do elementu s id pageContent
  $('#pageContent').append('<a class="page-link">Nové tlačítko</a>');
}, 1000);
tak toto tlačítko samozřejmě nemá posluchače, protože v dobře jejich registrace ještě neexistovalo. Není moc velký rozdíl mezi AJAXem a časovačem - obojí nastane později než pří načtení stránky.

Řešení jsou dvě:
1. přidat posluchače i po přidání tlačítka:
setTimeout(function() { // po sekundě od načtení stránky
  // přidá tlačítko do elementu s id pageContent
  var nove = $('<a class="page-link">Nové tlačítko</a>');
  $('#pageContent').append(nove);
  nove.click(function() {alert('stisknute!');});
}, 1000);
2. zaregistrovat posluchače univerzálnímu předkovi v DOMu (například body):
$("body").ready(function() { // při načtení stránky
  // přidá jednoho posluchače celému body, který bude sledovat klikání na úplně vše na stránce
  // a pokud náhodou bude kliknuto na něco s třídou page-link, tak se spustí zadaná funkce
  $(document).on('click', '.page-link', function() {alert('stisknute!');});
});
Toto umožní, aby se bude posluchač vztahovat vždy na úplně všechno na celé stránce.

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