ajax klicanje funkcij, ko se iz ajaxa izpise html

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?

24 odgovorov

Č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 ;)

1

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.

1

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;

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

1

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

2

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

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

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(){
});
1

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

Tako, kot je rekel @tsu: če premetavaš HTML, ko je enkrat DOM naložen, uporabi .on() namesto .click()