Nette.ajax: Jak přistoupit k HTML elementu v rozšíření pověšeném na událost complete
- tobice
- Člen | 30
V nette.ajax jsou k dispozici události success/complete, na které se dají pověsit vlastní akce k provedení po dokončení requestu. Problém je, že v těchto rozšíření jsem už nepřišel na to, jak přistoupit k původnímu elementu, který požadavek vyvolal (formulář, odkaz…). K dispozici mám pouze payload.
K tomu elementu mám přístup pouze během událostí před samotným požadavkem. Zkusil jsem to obejít následujícím způsobem, ale bezúspěšně:
<script>
$.nette.ext('rozsireni', {
start: function(xhr, settings) {
if (settings.nette) {
settings.complete = function() {
var triggerElement = settings.nette.ui;
// ... do stuff
}
}
}
});
</script>
Editoval tobice (29. 7. 2013 16:32)
- tobice
- Člen | 30
Tak nakonec jsem našel odpověď hluboko schovanou ve vlákně o Nette.ajax:
https://forum.nette.org/…jax-s-jquery?p=10
Mým cílem bylo skočit po provedení ajaxového požadavku na začátek stránky, ale jen v případě, kdy je požadavek vyvolán kliknutím na odkaz. Tj. aby formuláře byly ignorovány. Tady je mé řešení:
<script>
$.nette.ext('back-to-top', {
before: function(xhr, settings) {
if (settings.nette) {
this.triggerElement = settings.nette.ui;
}
},
success: function() {
if (this.triggerElement && this.triggerElement.tagName == 'A') {
window.scrollTo(0,0);
}
}
});
</script>