Tôi đang cố gắng viết một tùy chọn menu ngữ cảnh cho một trang của tôi. Về cơ bản, một div được nhấp chuột phải, một menu tùy chọn bật lên có thể được sử dụng để thực hiện các tác vụ.Trình đơn ngữ cảnh jQuery - tìm phần tử nào đã kích hoạt nó
Sự cố của tôi đang cố gắng tìm phần tử gốc đã kích hoạt mọi thứ (tức là div được nhấp chuột phải).
mã jQuery của tôi là nhiều hay ít:
//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>
- Vì vậy - Tôi có thể xem những gì yếu tố tạo sự kiện khi ban đầu nhấp chuột phải xảy ra. Nhưng không phải khi mục menu được nhấp.
Tôi đang làm việc vấp phải thứ gì đó với nhau bằng cách viết phần tử vào hộp văn bản ẩn khi được nhấp chuột phải, sau đó đọc khi một trong các tùy chọn được nhấp, sau đó xóa nó khi menu đóng. Có vẻ như không phải là cách tiếp cận lý tưởng mặc dù - và tôi cảm thấy như tôi đang thiếu một cái gì đó cơ bản.
Hy vọng bạn sẽ thấy những gì tôi đang cố gắng làm. Tôi có thể đăng một ví dụ hoàn chỉnh hơn theo yêu cầu.
Hai nhận xét: 1. Bạn đang sử dụng công cụ chọn để tìm phần tử #contextMenu nhiều lần. Nó sẽ là hợp lý để cache đối tượng jQuery đó: 'var $ contextMenu = $ (" # contextMenu ");' 2. Có thể là một ý tưởng tốt để bảo vệ chống lại 'originalElement' là không xác định, trong trường hợp đó' originalElement.id' sẽ ném một lỗi. –
Chúc mừng Šime. Tôi đồng ý với điểm của bạn nhưng tôi không quá quan tâm đến việc tái cấu trúc. Tôi đã chỉ được slotting vào mã của OP và làm cho nó rõ ràng làm thế nào để sử dụng các phương pháp dữ liệu. Trong trường hợp này, thay vì cache đối tượng, bạn chỉ có thể hưởng lợi từ chuỗi và không yêu cầu biến phụ :) –
Cảm ơn Jonathon, đó là những gì tôi cần! –