Sto cercando di scrivere un'opzione del menu di scelta rapida per una mia pagina. Fondamentalmente si fa clic con il tasto destro su un div, si apre un menu di opzioni che può essere utilizzato per eseguire attività.menu di scelta rapida di jQuery: trovare l'elemento che lo ha attivato.
Il mio problema è cercare di trovare l'elemento originale che ha attivato tutto (ovvero il div che è stato fatto clic con il pulsante destro del mouse).
Il mio codice jQuery è più o meno:
//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>
- Così - posso vedere quale elemento ha creato l'evento quando il primo pulsante destro del mouse accade. Ma non quando si fa clic sulla voce di menu.
Stavo lavorando per armeggiare qualcosa insieme scrivendo l'elemento in una casella di testo nascosta quando si fa clic con il pulsante destro del mouse, quindi leggendolo quando si fa clic su una delle opzioni, quindi rimuovendolo quando il menu si chiude. Non sembra però l'approccio ideale - e mi sento come se mi mancasse qualcosa di base.
Spero che tu veda quello che sto cercando di fare. Posso pubblicare un esempio più completo su richiesta.
Due osservazioni: 1. Si sta utilizzando il motore di selezione per trovare l'elemento #contextMenu più volte. Sarebbe ragionevole memorizzare nella cache l'oggetto jQuery: 'var $ contextMenu = $ (" # contextMenu ");' 2. Potrebbe essere una buona idea evitare che 'originalElement' non sia definito, nel qual caso' originalElement.id' sarebbe lanciare un errore –
Cheers Šime. Sono d'accordo con i tuoi punti, ma non ero troppo interessato al refactoring. Stavo solo inserendo il codice OP e chiarendo come utilizzare i metodi dati. In questo caso, invece di memorizzare l'oggetto nella cache, puoi trarre vantaggio dal concatenamento e non richiedere la variabile extra :) –
Grazie Jonathon, questo è proprio quello di cui avevo bisogno! –