Habe es jetzt mit einem Kniff hinbekommen. Habe alles, was vorher in window.addEvent('domready') war, in eine eigene Funktion ausgelagert und diese neben domready auch nochmal onSuccess aufgerufen.
Dadurch wird der Pagination explizit das addEvent zugeordnet und meine Welt ist in Ordnung.
Fraglich ist für mich jedoch immer noch, warum das per Ajax geladene Script nicht ausgeführt wird.
@joc
Wurde es wirklich nicht. Sonst hätte er es ja per console.log ausgeworfen. Es wurde nur der normale Link aufgerufen.
Mein Tag (Nacht) ist gerettet :-)
lomex
PS
Hier das Ergebnis:
Code:
<script type="text/javascript">
function jobajax(){
var jobAccordion = new Fx.Accordion($('jobliste'), '#jobliste h2', '#jobliste .content', {
display:-1,
onActive: function(toggler, element) {
toggler.addClass('active');
},
onBackground: function(toggler, element) {
toggler.removeClass('active');
}
})
document.getElements('.pagination a').addEvent('click', function(event){
event.preventDefault();
var page = event.target.get('href').match('page=[0-9]')
var token = '<?php echo $this->request_token; ?>';
new Request.JSON({
method:'get',
data:'g=1&action=fmd&id=<?php echo $this->id; ?>&REQUEST_TOKEN=' + token + '&' + page,
url:'ajax.php',
evalScripts: true,
evalResponse: true,
onSuccess: function(responseText) {
$('jobs').set('html', responseText.content);
// update token
token = responseText.token;
new Fx.Accordion($('jobliste'), '#jobliste h2', '#jobliste .content', {
display: -1
});
jobajax();
}
}).send();
return false;
});
}
window.addEvent('domready', function(){
jobajax();
});
</script>
Lesezeichen