2009-11-02 2 views
0

Этот пример немного упрощен, но на моей веб-странице ASP.NET в моем коде C#/jquery я использую контекстное меню правой руки, которое отображает «rightMenu», когда правая мышь щелчок.Получение идентификатора элемента из простого javascript-вызова

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

Или, по крайней мере знать элемент (эл) это принадлежит? Кажется, должен быть способ использовать указатель (этот), чтобы получить то, что я хочу, но я не вижу его. Я просто пропустил более простой способ решить всю проблему?

+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 из любого элемента в строке.

Редактировать после комментария:

Вы были правы об использовании этого. Я бы, наверное, сделать что-то вроде:

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

yes, thats true, используя коллекцию parents() более общий, тогда предполагается, что родительский элемент текущей td является tr-строкой. Я переключусь, как я его использую. Однако, когда я застрял, вы получаете элемент из универсального клика мыши, а также можете вызвать callkeyforitem(). – Jim

+0

К сожалению, добавлено дополнительно – Jake

+0

Я закончил делать что-то вроде этого, я просто добавил класс к кнопке, а затем привязал к клику с помощью функции jQuery .live. Это был не ответ ASP/C#, который я искал, но он все еще был установлен и забыл об этом. – Jim

Смежные вопросы