从普通的javascript调用中获取元素id

时间:2009-11-02 17:05:40

标签: javascript jquery

这个例子有点简化了,但是在我的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)指针来获得我想要的东西 - 但我没有看到它。 我只是错过了一种更直接的方式来解决整个问题吗?

1 个答案:

答案 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);}

希望有所帮助!