wake-up-neo.net

Greifen Sie auf ein Ereignis zu, um von einer benutzerdefinierten Funktion, die vom Attribut onclick des Tags ausgeht, die Funktion default aufzurufen

Ich habe Links wie diese:

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

und ich möchte innerhalb von myfunc eine preventDefault() ausführen, da in der Adressleiste ein # hinzugefügt wird, wenn Sie auf den Link klicken (ohne return false; oder href='javascript:void(0);').

ist das möglich? Kann ich das Ereignis in myfunc abrufen?

99
Omu

Ich glaube, Sie können event in die Funktion inline übergeben, die das event -Objekt für das ausgelöste Ereignis in W3C-kompatiblen Browsern sein wird (dh ältere Versionen von IE müssen noch erkannt werden Ihrer Event-Handler-Funktion, um window.event) zu betrachten.

Ein kurzes Beispiel.

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>
  1. Führen Sie es so aus, wie es ist, und beachten Sie, dass der Link nach der Warnung nicht zu Google weitergeleitet wird.
  2. Ändern Sie dann das event, das an den onclick -Handler übergeben wurde, in etwas anderes wie e, klicken Sie auf Ausführen und stellen Sie fest, dass die Umleitung nach der Warnung stattfindet (der Ergebnisbereich wird weiß und demonstriert dies) eine Umleitung).
141
Russ Cam

Die einfachste Lösung ist einfach:

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

Dies ist eigentlich eine gute Möglichkeit, Cache-Busting für Dokumente mit einem Fallback für keine JS-fähigen Browser durchzuführen (kein Cache-Busting, wenn kein JS)

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' + 
Math.round(new Date().getTime() / 1000);" 
href="http://www.domain.com/docs/thingy.pdf">

Wenn JavaScript aktiviert ist, wird die PDF mit einer Cache-Busting-Abfragezeichenfolge geöffnet. Andernfalls wird die PDF-Datei geöffnet.

96
JuLo

Versuche dies: 

<script>
    $("a").click(function(event) {
        event.preventDefault(); 
    });
</script>
10
Suave Nti
<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>
7
Aram Mkrtchyan

Fügen Sie den Links eine eindeutige Klasse und ein Javascript hinzu, das die Standardeinstellung für Links mit dieser Klasse verhindert:

<a href="#" class="prevent-default" 
   onclick="$('.comment .hidden').toggle();">Show comments</a>

<script>
  $(document).ready(function(){

    $("a.prevent-default").click(function(event) {
         event.preventDefault(); 
          });
  });
</script>
5
aaandre

Ich denke, wenn wir onClick verwenden, wollen wir etwas anderes als Standard machen. Also für alle Ihre Links mit onClick:

$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});
4
Ronan

Können Sie das href-Attribut nicht einfach aus dem a-Tag entfernen?

3

Sie können auf das Ereignis von onclick wie folgt zugreifen:

<button onclick="yourFunc(event);">go</button>

und bei Ihrer Javascript-Funktion füge ich diese erste Zeile hinzu:

function yourFunc(e) {
    e = e ? e : event;
}

verwenden Sie dann überall e als Ereignisvariable

1
gdarcan

Einfach!

onclick="blabla(); return false"
1
Jake

e.preventDefault (); aus https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

Oder geben Sie false von Ihrer Methode zurück.

0