2009-11-02 34 views
0

這個例子被簡化了一點,但在我的c#/ jquery代碼中的ASP.NET網頁中,我使用的是右手上下文菜單,當鼠標右鍵時顯示​​'rightMenu'被點擊。從一個普通的javascript調用獲取元素ID

$(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

'.contextMenu'。那是什麼插件? – 2009-11-02 17:24:40

+0

上下文菜單被列在主jQuery網站上,但直接鏈接在這裏:http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/ – Jim 2009-11-02 18:16:21

回答

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

希望有幫助!

+0

是的,這是真的,使用父母()集合是更通用的,然後假設當前td的父節點是tr行。我將改變我如何使用它。但是,我卡住的地方是從通用圖像按鈕中獲取元素,我甚至可以調用getkeyforitem()。 – Jim 2009-11-02 18:47:17

+0

糟糕,額外增加了 – Jake 2009-11-03 12:01:01

+0

我最終做了這樣的事情,我只是在按鈕中添加了一個類,然後通過jQuery .live功能附加到點擊。它不是我正在尋找的ASP/c#答案,但它仍然設置並忘記它。 – Jim 2009-11-13 16:29:11