这个例子有点简化了,但是在我的c#/ jquery代码的ASP.NET网页中,我使用右手上下文菜单,当点击鼠标右键时显示“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;
};
菜单的回调传回了单击的元素,可用于将keydata拉出当前表行。一旦我拥有了那个keydata,我可以用它来调用我之后的真实函数: 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);
或者至少知道它所属的元素(el)?似乎应该有一种方法来使用(this)指针来获得我想要的东西 - 但我没有看到它。 我只是错过了一种更直接的方式来解决整个问题吗?
答案 0 :(得分:1)
如果您更换该行:
var mykey = $(el).parent().find('.hiddenrowkey').text();
带
var mykey = $(el).parents("tr").find('.hiddenrowkey').text();
然后,您可以使用此函数从行中的任何元素中查找隐藏的rowkey。
评论后编辑:
你使用它是正确的。我可能会做类似的事情:
function showdetailsclicked(){ var rowKey = getkeyforitem(this);}
然而,我不确定ASP是否有问题,我对此表示怀疑,但你永远不知道......你可能需要做类似的事情:
<asp:ImageButton ID="imgDetails" runat="server" ToolTip="Show Details"
ImageUrl="./images/details.gif" OnClientClick="showdetailsclicked(this);return
false;"></asp:ImageButton>
function showdetailsclicked(el){ var rowKey = getkeyforitem(el);}
希望有所帮助!