2009-11-02 2 views
0

이 예제는 약간 단순화되었지만 내 ASP.NET 웹 페이지에서 내 C#/jquery 코드에서 오른쪽 마우스를 누르면 'rightMenu'를 표시하는 오른쪽 컨텍스트 메뉴를 사용하고 있습니다. 클릭합니다.일반 자바 스크립트 호출에서 요소 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).

오른쪽 마우스 만 사용하려는 경우이 방법을 사용하면 좋지만 이미지를 클릭하면 오른쪽 마우스 메뉴 선택과 같은 효과가 나타나도록 이미지를 일부 행에 포함하고 싶습니다. .

잘 수행하는 방법을 모르겠습니다. 내 페이지에 자바 스크립트로 연결하는 이미지를 포함 할 수

...

<asp:ImageButton ID="imgDetails" runat="server" ToolTip="Show Details" 
    ImageUrl="./images/details.gif" OnClientClick="showdetailsclicked();return 
    false;"></asp:ImageButton> 

하지만 어떻게 내가 그것을 코드 전화를받을 수 있습니다

getkeyforitem(el); 

또는 적어도 요소를 알고를 (엘) 그것은에 속하는가? 내가 원하는 것에 도달하기 위해 (this) 포인터를 사용하는 방법이 있어야하는 것처럼 보입니다. 그러나 나는 그것을 보지 못합니다. 전체적인 문제를 해결하는 좀 더 간단한 방법이 없습니까?

+0

'.contextMenu'. 어떤 플러그인입니까? –

+0

컨텍스트 메뉴가 메인 jquery 사이트에 나열되었지만 직접 링크는 다음 위치에 있습니다. http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/ – Jim

답변

1

당신이 라인을 교체하는 경우 :

var mykey = $(el).parent().find('.hiddenrowkey').text(); 

var mykey = $(el).parents("tr").find('.hiddenrowkey').text(); 

과를 다음 당신은 행의 모든 ​​요소에서 숨겨진 rowkey을 찾기 위해이 기능을 사용할 수 있습니다. 코멘트 후

편집 :

이 사용에 대한 권리했다. 아마 같은 것을 할 거라고 :

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

function showdetailsclicked(){ var rowKey = getkeyforitem(this);} 

그러나, 임 확실하지 프로그래머 ASP 몇 가지 문제가, 내가 그것을 의심하는 경우,하지만 당신은 모를 ... 당신은 그런 짓을 할 수 있습니다

희망이 도움이됩니다.

+0

예, 사실, parents() 컬렉션 사용 현재의 td의 부모가 tr 행이라고 가정하면보다 일반적입니다. 나는 그것을 어떻게 사용하고 있는지를 바꿀 것이다. 그러나, 내가 어디 붙어있어 일반 imagebutton 클릭하여 요소를 점점, 심지어 내가 getkeyforitem() 호출 할 수 있습니다. – Jim

+0

죄송합니다. 추가 – Jake

+0

을 추가했습니다. 이와 같은 작업을 마치고 버튼에 클래스를 추가 한 다음 jQuery .live 기능으로 클릭에 연결했습니다. 그것은 내가 찾던 ASP/C# 답이 아니었지만 여전히 설정되어 잊어 버렸습니다. – Jim

관련 문제