3 Stimmen

Wie kann man ein "Mousedown"-Ereignis in jQuery erneut auslösen (oder spät auslösen)?

Eine Frage beschäftigt mich in letzter Zeit sehr: In einem mousedown Handler verwende ich .preventDefault auf das Ereignis, um die Textauswahl beim Ziehen zu verhindern:

$(document).bind('mousedown', function(event){
    event.preventDefault();
});

So weit, so gut.

Dann möchte ich, während ich die Maustaste gedrückt halte, auf eine longclick auszulösendes Ereignis ( http://github.com/pisi/Longclick ) und haben die longclick Handler, um die ursprüngliche Handlung irgendwie fortzusetzen mousedown und beginnt mit der Textauswahl, als ob der Standardwert des Ereignisses nie verhindert worden wäre.

Gibt es eine Möglichkeit, eine Art von Late-Trigger ein ansonsten native Maus-Ereignis?

Ist .trigger in der Lage, ein bestehendes (gespeichertes) Ereignisobjekt irgendwie zu übernehmen? Zum Beispiel so etwas wie dieses..:

var originalEvent;

$(document)
    .bind('mousedown', function(event){
        event.preventDefault();
        originalEvent= event;
    })
    .bind('longclick', function(event){
        $(event.target).trigger(originalEvent)
    })

Ich möchte einen ganzen Textabsatz ziehen können und trotzdem die Möglichkeit haben, innerhalb des Absatzes eine Textauswahl zu treffen.

Alle Antworten, Vorschläge und Gedanken sind willkommen!

1voto

Tgr Punkte 26333

Übergabe eines Ereignisobjekts an trigger funktioniert, soweit jQuery betroffen ist (mit jQuery gebundene Event-Handler werden ausgeführt und erhalten das Objekt als Parameter), was es Ihnen ermöglicht, coole Sachen zu machen wie este , aber es wird keine Standardmaßnahme ergriffen. Die meisten Browser unterstützen die DOM Level 2 Spezifikation, dispatchEvent außer für die üblichen Verdächtigen die über fireEvent stattdessen, was ziemlich nutzlos ist, da es die Standardaktion nicht auslöst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X