Beste Methode, um Mouseup außerhalb des Maus-Down-Elements zu erfassen

$('#clickableElement').bind({
    mousedown: function(e)
    {
        console.log('mousedown on element');

        $(document).bind('mouseup',function(e){
            console.log('mouseup caught');

            //Do some magic here 

            $(this).unbind('mouseup');
        });

    },
    mouseup:function(e)
    {
        //mouseup within element, no use here.
    }
});

Ich versuche, das Mouse-Up-Ereignis aus einem Maus-Down-Ereignis abzufangen, das innerhalb oder außerhalb eines Elements ausgelöst wurde. Dieser Code funktioniert fast, aber das Problem ist das Aufheben der Bindung ('mouseup'), das andere Skripte aufhebt, die an das mouseup-Ereignis (jqueryui) angehängt sind. Wenn "unbind ()" nicht gesetzt ist, wird der Code innerhalb des mouseup-Ereignisses gestapelt und x-mal aufgerufen, wobei x für die Zeiten steht, in denen Sie die Maus bewegt haben.

Route 1: Gibt es eine Art Selbstzerstörungsfunktion, die sich selbst einmal aufruft und zerstört?

Route 2: Wie kann die Mouse-Up-Funktion kopiert / geklont werden, bevor der Code eingefügt wird?

Im Idealfall möchte ich diese Codestruktur aus Gründen der Übersichtlichkeit beibehalten, da ich viele anklickbare Elemente habe. Das Binden von document.mouseup außerhalb von element.mousedown wäre daher unübersichtlich.

Hier ist die Geige, die ich vergessen habe hinzuzufügenhttp://jsfiddle.net/9gFNk/

Antworten auf die Frage(3)

Ihre Antwort auf die Frage