Этот пример немного упрощен, но на моей веб-странице ASP.NET в моем коде c # / jquery я использую контекстное меню для правой руки, которое отображает «rightMenu» при щелчке правой кнопкой мыши.
$(document).ready(function() {
$(".RH_signoffrow td").contextMenu({
menu: 'rightMenu'
},
function(action, el, pos) {
var mykey = getkeyforitem(el);
mykey = "Details|" + mykey;
alert(
'Action: ' + action + '\n\n' +
'Key is: ' + mykey
);
if(action == "details"){
trigger_details_panel(mykey);
}
});
};
//for any td in the right hand side - get its row key
function getkeyforitem(el){
var mykey = $(el).parent().find('.hiddenrowkey').text();
// alert(
// 'Internal getkeyforitem Call' + '\n\n' +
// 'Key is: ' + mykey
// );
return mykey;
};
Функция обратного вызова меню возвращает элемент, по которому был выполнен щелчок, и который можно использовать для извлечения ключевых данных из текущей строки таблицы. Когда у меня есть эти ключевые данные, я могу использовать их для вызова реальной функции, которая была мне нужна:
trigger_details_panel (MyKey).
Это прекрасно работает, если я хочу использовать только правую мышь, но я хочу включить изображение в некоторые строки, чтобы при нажатии на изображение получался тот же эффект, что и при выборе меню правой кнопкой мыши.
Я не уверен, как сделать это чисто.
Я могу добавить изображение, которое ссылается на javascript на моей странице ...
<asp:ImageButton ID="imgDetails" runat="server" ToolTip="Show Details"
ImageUrl="./images/details.gif" OnClientClick="showdetailsclicked();return
false;"></asp:ImageButton>
Но как мне заставить его позвонить по коду:
getkeyforitem(el);
Или хотя бы знать элемент (эл), к которому он принадлежит? Кажется, должен быть способ использовать указатель (this), чтобы получить то, что я хочу, но я этого не вижу.
Я просто скучаю по более простому способу решения всей проблемы?