2 Stimmen

jQuery-Ereignis Problem bei der Implementierung von contextmenu?

Wenn das Kontextmenü angezeigt wird,

wenn der Benutzer aus dem Kontextmenü herausklickt,

sollte es verstecken.

Wie lässt sich diese Funktion implementieren?

Ist es möglich, auf click_out zu hören, und wenn es erkannt wird, das Kontextmenü auszublenden und den Listener zu löschen?

2voto

Parrots Punkte 25928

Sie können an den body.click binden, um ihn auszublenden. Jedes Klick-Ereignis auf einem anderen Element sprudelt schließlich auf den Körper:

$('body').click(function() {
   $('#menu').hide();
});

Das obige Beispiel geht davon aus, dass Ihr benutzerdefiniertes Menü die ID "menu" hat. Ersetzen Sie nach Bedarf.

Je nachdem, wie Ihr Menü funktioniert (wenn Sie verschachtelte Menüs haben, auf die Sie klicken können, um sie zu öffnen), möchten Sie vielleicht etwas an die Klicks innerhalb des Menüs binden, um das Ereignis mit e.stopPropagation() ;

Um den Hörer zu löschen, können Sie Folgendes tun:

$('body').click(function() {
   $('#menu').hide();
   $(this).unbind('click');
});

1voto

John Duff Punkte 36730

Sie könnten dem Dokument einen onclick-Handler hinzufügen und dann prüfen, ob das Ereignisziel das Menü ist oder nicht. Wenn der Klick auf das Menü erfolgt, tun Sie nichts, wenn nicht, blenden Sie es aus.

jQuery(document).click(function(event) {
  if(event.target==$('context-menu'){
    $('context-menu').hide();
    $(this).unbind('click');
  }
}):

0voto

ScottE Punkte 21245

Hier ist ein Ausschnitt aus einem funktionierenden Code:

document.onclick = Tree.hideContext;

    Tree = {
        hideContext: function() {
            $("#context").hide();
        }
    }

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