Nette.ajax: Jak přistoupit k HTML elementu v rozšíření pověšeném na událost complete

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tobice
Člen | 30
+
0
-

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
+
0
-

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>