Ich habe das folgende Skript, das ich geschrieben habe.JQuery bedingte preventDefault() feuern, wenn nicht
<script>
$(document).ready(function(){
$('a').data('loop',true);
$('body').on('click', 'a', function(event){
console.log($(this).data('loop'));
if ($(this).data('loop') == 'true') {
console.log('hit');
event.preventDefault();
caller = $(this);
$(this).data('loop',false);
var linkref = $(this).attr('href');
var linkpos = $(this).offset();
var screenwidth = $(window).width();
var json_data = JSON.stringify({linkref: linkref, linkpos: linkpos, screenwidth: screenwidth});
$.ajax({
url: "content/submitcontenthandler?handler=core/_dashboard&method=tracking_ping",
method: "POST",
data: "json=" + json_data,
complete: function (jqXHR, status) {
console.log(status);
console.log(caller);
$(caller).click();
}
});
} else {
console.log(event.isDefaultPrevented());
console.log('miss');
$(this).data('loop',true);
}
});
});
</script>
Es funktioniert, sendet mir die Details, die ich will usw. usw. ABER !!!
Wenn ich auf einen Link klicke, feuert er mir die Details über Ajax ab, dann soll er das Ereignis erneut "klicken", was er tut! aber das Ereignis feuert nicht normal ab. Wenn ich also auf einen Link zu einer anderen Seite klicke, würde ich auf diese andere Seite gehen ... das passiert nicht.
Wenn ich die Zeile auskommentieren event.preventDefault(); Dann das Ereignis ausgelöst wird, wie ich erwarten würde ...
mir So sieht es aus wie das Event.preventDefault selbst ausführt, wenn es nicht gemeint ist während des zweiten Anrufs sein ...
Sorry, wenn dies a etwas kompliziert zu verstehen. Ich verstehe nicht ganz, was selbst passiert. Ist es möglicherweise ein Fehler, oder hat etwas, das ich getan habe, das verursacht?
Ich dachte nicht, dass ich könnte, aber ich habe erfolgreich ein jsfiddle dafür gemacht. https://jsfiddle.net/atg5m6ym/2001/
Sieht so aus, als wäre der Wert, den Sie 'caller' zuweisen, falsch, es sollte' $ (this) 'not' this' sein. –
@KallumTanton Danke, ich habe das Update gemacht. Es funktioniert immer noch genauso (obwohl ich den Unterschied sehen kann zwischen dem, was jetzt ein Objekt ist und was vorher eine Zeichenkette war). Aber es schickt mich immer noch nicht an mein Ziel, wenn ich auf einen Link klicke ... – TolMera
Ich denke, du solltest den erste Anweisung in der "ready" -Funktion – Victor