Ich versuche, Anker-Tags zu targetieren und eine Ajax-Anfrage auszulösen. Mit jQuery ist dies sehr einfach:Delegiertes Klickereignis auf Anker
$(document.body).on('click', "a", function (event) {
'use strict';
if ($(this).is('.a-btn')) {
event.preventDefault();
} else if ($(this).is('.no-sp')) {
//
} else {
address = $(this).attr("href")
event.preventDefault();
App.Ajax.Page(address + '/');
}
});
jedoch nativer JavaScript verwenden, könnte ich mir vorstellen event.target
mit würde den Trick.
Aber dies nicht funktioniert, weil das Ereignis immer Ziele, was Element innerhalb des Anker-Tag ist:
App.Ajax.Navigate = function() {
'use strict';
document.body.addEventListener('click', function (e) {
e.preventDefault();
console.log(e.currentTarget);
if (e.target.tagName === 'a') {
var element, link;
element = e.target;
link = element.href;
if (App.HTML.hasClass(element, 'a-btn')) {
e.preventDefault();
} else if (App.HTML.hasClass(element, 'no-sp')) {
return;
} else {
e.preventDefault();
App.Ajax.Page(link);
}
}
}, true);
window.onpopstate = function (event) {
App.Page.type = event.state.type;
App.Page.Replace(event.state.content, event.state.type, App.Empty, false);
};
};
ich nativen Javascript verwenden möchte zu tun, was jquery hat im ersten Codeausschnitt ist es möglich, ?
Und am nächsten ist, nicht in einer Reihe von Browsern unterstützt ... – epascarello
Ich will nicht eine experimentelle Methode verwenden, die nicht in allen Browsern unterstützt wird. –
@epascarello, aber Sie können Polifill dafür verwenden. Sehen Sie 2 Lösungen durch den Link in der Antwort (aktualisiert, jetzt zeigt es englische Version der Dokumentation). – Qwertiy