ajax klicanje funkcij, ko se iz ajaxa izpise html
 
php.programer 23. okt 2013 10:55:44 Pridružen od:
20. sep 2011
347 objav
154 106 10
#1

Pozdravljeni.



Imam težavo. Spletna stran ima ene vrste sporočila, ko klikneš na sporočilo se z ajaxom generira HTML, ki se izpiše pod to sporočilo, se pravi komentarje.



Komentarji imajo AJAX klice, vendar se ne izvedejo, ker ta HTML generirana z ajaxom ni bila naložena na začetku strani.



Zanima me, kako se refresha browser - na pamet sem rekel, da ta zazna ajax klice v teh zgeneriranih HTML komentarjih?


všeč(0) ni všeč(0) spam(0)
 
tsu 23. okt 2013 11:02:23 Pridružen od:
16. jun 2008
351 objav
482 34 14
#2

Če govorimo o jQuery ajax funkciji ima le ta .success() metodo. V tej metodi, pač pokličeš novo funkcijo, ki bo prav tako izvedla ajax klic.



Če pa pokažeš kodo, pa morda celo lažje pomagamo ;)


všeč(1) ni všeč(0) spam(0)
LinkedIn, @deveti, Si shell:aff link ;)
 
Vini 23. okt 2013 11:03:45 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#3

Bo pa le treba povedati malo več. Kakšni so ti AJAX klici in kakšen dogodek jih proži? Je to onlick? Če si v HTML tagu definiral onlick atribut, bi se zadeva ob kliku morala sprožiti, tudi če si v DOM te zadeve insertal kasneje. Malo bolj razloži problem, drugače lahko samo ugibamo.


všeč(1) ni všeč(0) spam(0)
 
php.programer 23. okt 2013 11:22:04 Pridružen od:
20. sep 2011
347 objav
154 106 10
#4

Hvala obema za pomoč.

HTML

<div class="wall_info" id="'.$wall_item['item']['ID'].'" style="cursor:pointer">'.$description.'</div><div class="wall_info_html_'.$wall_item['item']['ID'].'" style="display:none"></div>



JQUERY

$(".wall_info").click(function() {



VRNJEN HTML, oz. kaj zgenerira PHP

case 'wallinfo':

$wall = $this->CI->wall->wall
item(p('ID'));

$this->json['html'] = '<h3>Komentarji na zapis</h3>';

$this->json['html'] .= '<table class="table table-bordered">';

foreach ($wall['comment'] as $item)

{

$this->json['html'] .= '<tr><td><strong>'.$wall['access'][$item['user_id']]['info']['display_name'].' '.date('d. m. Y H:i:s',strtotime($item['datetime'])).'</strong>'.br().$item['comment'].'</td></tr>';


            }
$this->json['html'] .= '<tr><td><strong>Oddaj komentar: '.__('user/display_name').'</strong><br><input name="" tyle="input" style="margin:0.3em 0"><br><button class="btn btn-small btn-success" class="comment_confirm" id="1423">Oddaj komentar</button></td></tr>';
$this->json['html'] .= '</table>';
break;
všeč(0) ni všeč(0) spam(0)
 
carli 23. okt 2013 11:23:14 Pridružen od:
5. avg 2008
1258 objav
583 54 17
#5

Ali pa ima element, ki proži click enak ID kot prvi element, ker morajo biti #idji unikatni je lahko to težava :D


všeč(1) ni všeč(0) spam(0)
 
Vini 23. okt 2013 11:25:54 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#6

Ja, tako kot je rekel tsu, torej. V .success() callbacku bindaj click event na vse na novo dodane elemente s classom wall_info.


všeč(2) ni všeč(0) spam(0)
 
php.programer 23. okt 2013 11:28:37 Pridružen od:
20. sep 2011
347 objav
154 106 10
#7

kak se to natančno napiše? če mi lahko daš na primeru.


všeč(0) ni všeč(0) spam(0)
 
Vini 23. okt 2013 11:34:04 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#8

jQuery.ajax(), kjer je opisan tudi success callback in .click(), kjer je opisano, kako se binda event handler.


všeč(0) ni všeč(0) spam(0)
 
tsu 23. okt 2013 11:42:31 Pridružen od:
16. jun 2008
351 objav
482 34 14
#9

Aja, pa če delaš z insertanjem htmlja po tem ko je DOM že naložen, ti priporočam namesto .click() funkcije uporabiš:


.on("click", function(){
});
všeč(1) ni všeč(0) spam(0)
LinkedIn, @deveti, Si shell:aff link ;)
 
php.programer 23. okt 2013 11:43:27 Pridružen od:
20. sep 2011
347 objav
154 106 10
#10

mislil sem, če bi mi lahko napisal primer, kako bi to izgledalo pri meni, za mojo kodo. bom pogledal, hvala za linka!


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se