Próbuję napisać opcję menu kontekstowego dla strony mojej. Zasadniczo kliknij prawym przyciskiem myszy, pojawi się menu opcji, które można wykorzystać do wykonywania zadań.Menu kontekstowe jQuery - znajdowanie elementu, który go wyzwoliło
Mój problem polega na znalezieniu oryginalnego elementu, który uruchomił wszystko (tj. Element div, który został kliknięty prawym przyciskiem myszy).
Mój kod jQuery jest bardziej lub mniej:
//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>
- Więc - Widzę co elementem stworzony przypadku, gdy początkowa prawym przyciskiem dzieje. Ale nie po kliknięciu elementu menu.
Pracowałem nad zbieraniem czegoś razem, wypisując element do ukrytego pola tekstowego, gdy jest klikany prawym przyciskiem myszy, a następnie czytając go po kliknięciu jednej z opcji, a następnie usuwając go po zamknięciu menu. Nie wydaje się jednak idealnym podejściem - i czuję, że brakuje mi czegoś podstawowego.
Mam nadzieję, że widzisz, co próbuję zrobić. Mogę wysłać bardziej kompletny przykład na życzenie.
Dwie uwagi: 1. Korzystasz z silnika selektora, aby znaleźć element #contextMenu kilka razy. Rozsądne byłoby buforowanie tego obiektu jQuery: 'var $ contextMenu = $ (" # contextMenu ");' 2. Dobrym pomysłem byłoby zabezpieczenie się przed 'oryginalnymElementem ', który jest niezdefiniowany, w którym to przypadku' originalElement.id' rzuć błąd. –
Pozdrawiam Šime. Zgadzam się z twoimi punktami, ale nie byłem zbyt zainteresowany refaktoryzacją. Właśnie zapisywałem kod OP i wyjaśniałem, jak używać metod danych. W tym przypadku zamiast buforować obiekt, możesz po prostu skorzystać z łączenia i nie wymagać dodatkowej zmiennej :) –
Dzięki Jonathon, to właśnie to, czego potrzebowałem! –