ajax klicanje funkcij, ko se iz ajaxa izpise html
 
Spartacus 23. okt 2013 12:10:28 Pridružen od:
23. dec 2007
642 objav
828 38 4
#11

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


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

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.



všeč(0) ni všeč(0) spam(0)
 
Spartacus 23. okt 2013 12:26:54 Pridružen od:
23. dec 2007
642 objav
828 38 4
#13

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.


všeč(0) ni všeč(0) spam(0)
 
Vini 23. okt 2013 12:39:37 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#14

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.


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

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


všeč(0) ni všeč(0) spam(0)
LinkedIn, @deveti, Si shell:aff link ;)
 
Vini 24. okt 2013 09:46:14 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#16

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


všeč(1) ni všeč(0) spam(0)
 
php.programer 24. okt 2013 12:08:25 Pridružen od:
20. sep 2011
347 objav
154 106 10
#17

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


všeč(0) ni všeč(0) spam(0)
 
Jacky 24. okt 2013 15:14:35 Pridružen od:
22. apr 2012
73 objav
53 15 0
#18

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.


všeč(1) ni všeč(0) spam(0)
 
php.programer 24. okt 2013 17:41:48 Pridružen od:
20. sep 2011
347 objav
154 106 10
#19

Hvala Jacky za pomoč.


všeč(0) ni všeč(0) spam(0)
 
php.programer 7. feb 2014 14:56:38 Pridružen od:
20. sep 2011
347 objav
154 106 10
#20

$(".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?


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

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se