Aktivieren und deaktivieren von jQuery Kontext-Menü
Benutze ich
$('#test').unbind('click');
entfernen Sie das click-Ereignis auf die #test-item. Wie mache ich das Element klickbar wieder?
Eigentlich habe ich eine Tabelle. Ereignis klicken erscheint ein Kontextmenü. Aber wenn es keine Einträge im Menü deaktiviert werden. Also ich benutze Bindung oben. Da das Kontext-Menü wird erzeugt, indem ein plugin ich weiß nicht wie man es wieder anklickbar.
Irgendwelche Ideen?
Update: dies ist, wie Sie das Kontext-Menü eingerichtet ist
$('#contacts tbody tr').contextMenu('myMenu1', {
bindings: {
'sms': function(t) {},
'delete': function(t) {}
}
});
Da bin ich noch nicht sicher, wie mein problem zu lösen ich beschreibe es ein wenig mehr. Ich benutze die leichte Kontext-Menü-plugin in jQuery für die Anzeige von Kontext-Menüs.
#contacts tbody tr
sind die Tabellenzeilen und - myMenu1
ist das Kontextmenü, das erscheint auf tr auf.
Auf meiner Seite habe ich eine Tabelle. Jede Zeile hat Ihren eigenen Kontext-Menü, auch immer das gleiche, aber function(t)
referes immer auf die angeklickte Zeile.
Gut, kann die Tabelle leer sein, so möchte ich deaktivieren Sie das Kontext-Menü. Ich glaube, es gibt vielleicht Möglichkeiten, das zu tun. Einer ist die Bindung die click-Ereignis, das nicht funktioniert für mich.
Ich hoffe jemand hat eine Idee.
InformationsquelleAutor Artjom Zabelin | 2011-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Cache handler an eine variable. Dann bind und unbind mit dieser Referenz.
Anstelle der Bindung die click-event-inline:
Erklären, die Funktion einer Variablen:
Binden und anschließend über die variable name:
Dann können Sie unbind-die spezielle click-handler:
Dann können Sie immer noch re-bind die gleiche Funktion:
Warf einen kurzen Blick auf die Quelle. Die Veranstaltung ist gebunden an Kontext-Menü, klicken Sie nicht auf.
Können Sie den Zugriff auf die Funktion durch das element der Daten.events Eigenschaft (ähnlich zu dem, was j3frea sagte). Haben Sie einen Blick auf diese fiddle-Beispiel für eine vollständige Auflösung.
Im wesentlichen können Sie dies tun:
Cache/store/speichern. stattdessen deklarieren Sie die Funktion anonym inline, speichern Sie in eine variable. Ich aktualisierte die Antwort, um es klar.
Ich habe versucht, es auf diese Weise, aber ich bin nicht sicher, ob das funktioniert, habe ich aktualisiert meine Frage mit meinem code. Ich bin nicht sicher, was zu cache...
warf einen kurzen Blick auf die Quelle und fand Sie problem. Finden Sie die aktualisierte Lösung und check-out der Geige. Es kann sein, lohnt sich erstellen Sie ein neues plugin und darunter ein deaktivieren des api-Methode (oder vielleicht forking das aktuelle plugin).
danke, auf jsFiddle funktioniert es bei mir auch, aber wenn ich den code in mein Projekt, meine tab-navigation funktioniert nicht mehr. jsfiddle.net/mSYfs/1 die variable c ist 0, wenn die Tabelle leer ist, in diesem Fall, den ich lösen die Ereignisse, und ich kann nicht navigieren mit meinen tabs nicht mehr. Bedeutet "Bindung" Bindung, die alle Ereignisse?
InformationsquelleAutor Josiah Ruddell
Werfen Sie einen Blick auf diese Frage Rebind-DOM-Event mit jQuery
Josiah ' s Lösung ist vorzuziehen, aber wenn Sie wirklich wollten, um Bindung, die das click-Ereignis ganz ich glaube, Sie könnten dies tun:
Denken Sie daran, dass Daten('events').klicken Sie auf ein array, so würden Sie brauchen, um zu speichern die handler für jedes Mitglied des Arrays.
Haben Sie versucht, Josiah ' s Lösung?
das problem ist, dass es keine Klick-Prozedur, die ich binden konnte, in mein app habe ich nur den code oben in meiner Frage, das ist alles, also ich weiß nicht, wie zu erhalten clickHandle, dass ich zu binden, müssen Sie es erneut
InformationsquelleAutor jcuenod