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

Vidva, ne govorita neumnosti, no. :) V dokumentaciji za metodo .click() lepo piše:

This method is a shortcut for .on( "click", handler ) in the first two variations, and .trigger( "click" ) in the third.

Res?

http://jsfiddle.net/ESRqF/5/

poskusi obe funkciji, pa poročaj katera dela :)

P.S. Uporabniška navodila: Klikni run, klikni add row in klikni na številko 3.

Ja, seveda, pri sintaksi .on("click", selector, handler) je tako kot praviš, pri sintaksi .on("click", handler), ki jo je omenil tsu, je pa zadeva enaka kot .click(handler).

Se pa strinjam, z uporabo .on("click", selector, handler) odpade .success() callback.

Drgač so pa bližnjice načeloma počasnejše ;)

Ja, tale je počasnejša za eno preverjanje dolžine arguments arraya in en klic metode, torej vse skupaj nič. :) Ampak ja, saj smo že ugotovili, .on("click", selector, handler) lahko elegantno reši problem dodajanja v DOM brez kompliciranja s callbacki pri AJAX requestih.

Bi pa rekel, da je .on("click", selector, handler) počasnejša rešitev, ker mora le ob vsakem kliku bubblati čez DOM in izvajati vse delegated event handlerje. O tem govorim:

When a selector is provided, the event handler is referred to as delegated. The handler is not called when the event occurs directly on the bound element, but only for descendants (inner elements) that match the selector. jQuery bubbles the event from the event target up to the element where the handler is attached (i.e., innermost to outermost element) and runs the handler for any elements along that path matching the selector.

Lahko pa, da se besno motim in se tole bubblanje dogaja vedno, za vsak slučaj. :) Ne vem, toliko v drobovje jQueryja se pa ne mislim spuščati. :P

1

sem preveril vaše odgovore, hvala, bom uporabil rešitev, ki ste mi jo dali!

Sam sem ne dolgo nazaj naletel na enak problem, rešitev je dokaj enostavna. JQuery funkcija "on" ima 2 različni "bind" funkciji.

$('div').on('click, function() {
// Naredi kaj češ
});

To je enako kod $('div').click(function() {});

Ali pa tole kar ti potrebuješ za dinamične HTML DOM zadeve:

$('div.v-katerega-si-nalozil-ajax').on('click', 'a.neki-link-za-click', function() {
// Na click
alert('Click na dinamični ajax!');
});

Torej z to kodo bo jQuery gledal za spremembe na divu v katerega si nalagal dinamične vsebine in ko bo ta spremenjen, ga bo ponovno zavzel tako da bodo linki vedno imeli "click" handler. Upam da je bilo to razumljivo ^^

P.S.: Vem da so ljudje pred menoj napisali enako rešitev, jaz sem jo samo malo bolj poenostavil.

1

Hvala Jacky za pomoč.

$(".ajaxwallarchive_confirm").on("click", function()
{
alert("OK");
});

tole sem recimo uporabil, ko sem dodal ajaxwallarchiveconfirm na način, da sem gumbku dodal CLASS:
$('button[').attr('class','btn btn-success ajax
wallarchiveconfirm');

potem pa sem poizkusil klicat ajaxwallarchive_confirm pa mi ne naredi alerta.]()

kako je treba pravilno poklicati klic tega classa?

Kateri jquery uporabljas?

Naredil sem točno tako, kot imaš ti, pa dela v redu:
http://jsfiddle.net/QLxpC/