jQuery - Kontext-Menü- element zu finden, was es ausgelöst hat, aus
Bin ich zu schreiben versucht, ein Kontext-Menü-option für eine Seite von mir.
Im Grunde ein div-Element mit der rechten Maustaste geklickt, ein Optionen-Menü erscheint, die verwendet werden können, Aufgaben zu erfüllen.
Mein problem versucht zu finden, das ursprüngliche element, die Auslöser für alles (also das div, das war der rechten Maustaste geklickt haben).
Mein jQuery-code ist mehr oder weniger:
//this is what displays the context menu
$('.outfeedPosition').bind("contextmenu", function (e) {
$('#contextMenu').css({
top: e.pageY + 'px',
left: e.pageX + 'px'
}).show();
//'this' is the element which was clicked by the user.
alert($(this).attr('id'));
return false;
});
//this is the contextMenu's button handler.
$('#ctxDelete').click(function () {
alert('delete was clicked, but i dont know by which element - so I dont know which one to delete');
});
<div id="contextMenu">
<ul>
<li><a id="ctxInsert" href="#">Insert</a></li>
<li><a id="ctxEdit" href="#">Edit</a></li>
<li><a id="ctxDelete" href="#">Delete</a></li>
</ul>
</div>
--
Also - ich kann sehen, was element erstellt das Ereignis, wenn der erste mit der rechten Maustaste passiert.
Nicht aber, wenn der Menüpunkt angeklickt wird.
Dem ich arbeitete, tastete etwas zusammen schreiben Sie das element aus, um ein verstecktes Textfeld, wenn Sie mit der rechten Maustaste geklickt, dann Lesen Sie es, wenn Sie eine der Optionen angeklickt, dann entfernen Sie es, wenn das Menü geschlossen wird.
Scheint nicht der ideale Ansatz, aber - und ich fühle mich wie ich ' m fehlt etwas grundlegendes.
Hoffe, Sie sehen, was ich versuche zu tun.
Ich kann nach ein vollständigeres Beispiel auf Anfrage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie überlegen, mit Hilfe der jQuery Datenspeicherung Methoden.
In Ihrem Kontext-Menü-code, den Sie setzen können:
Dann, wenn Sie wollen, um das element zu referenzieren, die initiiert klicken, können Sie genau dies tun:
Und setzen
originalElement
in der jQuery-Funktion$()
Zugriff auf die jQuery-Güte. Es spielt keine Rolle, wo Sie die Daten, da alle DOM-element kann Daten zugeordnet sein. Sie speichern können, alles - im Beispiel-code oben, ich Speichere dieHTMLElement
raw (nicht jQueryified), aber Sie können speichern das auch, wenn Sie wollen.Sehen Sie hier ein kleines Beispiel: http://www.jsfiddle.net/jonathon/sTJ6M/
var $contextMenu = $("#contextMenu");
2. Es könnte eine gute Idee sein, zum Schutz gegenoriginalElement
wird nicht definiert, in welchem FalloriginalElement.id
würde einen Fehler auslösen.Ich ein hidden-Feld, und dann finden Sie es auf der Grundlage der klicken Sie auf, wie diese:
dann mit JQuery
Ich bin ein wenig spät zur party hier, aber ich fand, dass, wenn das Kontext-Menü generiert wird, das aktive Element bekommt die Kontext-menu-active " - Klasse Hinzugefügt. Dies kann nur in neueren Versionen. Ich bin über Kontext-Menü 1.6.6.
Einfach hinzufügen:
dem Kontext-Menü-handler. Hier ist es in Kombination mit den Beispiel-code.