получение идентификатора элемента из простого вызова javascript - PullRequest
0 голосов
/ 02 ноября 2009

Этот пример немного упрощен, но на моей веб-странице ASP.NET в моем коде c # / jquery я использую контекстное меню для правой руки, которое отображает «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; 
};

Функция обратного вызова меню возвращает элемент, по которому был выполнен щелчок, и который можно использовать для извлечения ключевых данных из текущей строки таблицы. Когда у меня есть эти ключевые данные, я могу использовать их для вызова реальной функции, которая была мне нужна: 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);

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

1 Ответ

1 голос
/ 02 ноября 2009

Если вы замените строку:

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

с

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

Затем вы можете использовать эту функцию, чтобы найти скрытый ключ строки из любого элемента в строке.

Изменить после комментария:

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

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...