Autor Zpráva
David1256
Profil
Dobrý den,

mám tento kód.

<html>
  <head>
  <title>Příklad</title> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">   
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  </head>
  <body> 
    <div id="obal">
      <a href="#" id="element">Element</a>
    </div>
    <a href="#" id="vymenObsahObalu">Vyměň obsah obalu</a>
  <script>                
  document.getElementById("element").onclick = function() {alert("Kliknul jsi na element.");}
  document.getElementById("vymenObsahObalu").onclick = function() {$("#obal").load("element.html");}
  </script>
  </body>
</html>

Obsah souboru element.html je:

<a href="#" id="element">Element</a>

Výše uvedený příklad tedy po kliknutí na odkaz "Vyměň obsah obalu" naloaduje do divu s id "obal" soubor element.html. Prakticky se tedy provede reload, jelikož v elemet.html je stejný obsah jako v divu "obal". Problém však je v tom, že když se klikne poprvé na "Element", tak vyskočí správně hláška "Kliknul jsi na element", ovšem po kliknutí na "Vyměň obsah obalu" a poté znovu kliknutí na "Element" se už hláška "Kliknul jsi na element nezobrazí", jak kdyby vůbec nevěděla o tom, že má někde nadefinované chování na onClick. Nevíte někdo, čím by to mohlo být a jak to vyřešit?

Děkuji.
Zechy
Profil
Pokud potřebuješ prvku dát funkci, která má probíhat i po jeho ajaxovém reloadu, je jistější mu to dát například jako
<a onclick="...">...</a>
Kde v onlick zavoláš svojí funkce pro akci. Pokud je totiž prvek nově přidán, nebo reloadnutý ajaxem, tak skript jako by ho už v tu chvíli nedokázal najít.
David1256
Profil
Ok, díky.
Destiny_1
Profil
nebylo by lepší to celé napsat v jquery?
$(document).ready(function(){
$("#element").click(function(){
alert("funguje");

});
$("#vymenObsahObalu").click(function(){
alert("taky funguje");
});

});
_es
Profil
David1256:
ovšem po kliknutí na "Vyměň obsah obalu" a poté znovu kliknutí na "Element" se už hláška "Kliknul jsi na element nezobrazí", jak kdyby vůbec nevěděla o tom, že má někde nadefinované chování na onClick.
Lebo po vyplnení obsahom z element.html sa element s id="element" zmaže a nový, dynamicky vytvorený, síce s rovnakým id, udalosť nemá nastavenú.
Destiny_1
Profil
ano _es má pravdu, takže kód by mohl vypadat takhle
<html>
  <head>
  <title>Příklad</title> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">   
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  </head>
  <body> 
    <div id="obal">
      <a href="#" id="element">Element</a>
    </div>
    <a href="#" id="vymenObsahObalu">Vyměň obsah obalu</a>
  <script>                
$(document).ready(function(){
$("#obal").on("click","#element",function(){
alert("funguje");
 
});
$("#vymenObsahObalu").click(function(){
$("#obal").load("element.html");
});
 
});
  </script>
  </body>
</html>

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: