Доброй ночи.
Я не особо силен в JS и в JQuery в частности, поэтому прошу ногами не пинать. Могу путаться в терминологии.
Возникла потребность в использовании плагина для создания контекстных менюшек (
GitHub). Его обработчик должен навешиваться на строки таблицы, а действия должны зависеть от конкретной строки, поскольку каждая строка содержит информацию в data-атрибуте.
Нужно сделать как-то так (действие в данном плагине может описываться как функцией, так и строкой-ссылкой):
$("table tr").bootstrapContextMenu({
items: [
{
title: "Действие 1",
target: function() { alert( $(this).data("somedata") ); }
},
{
title: "Действие 2",
target: '/someaction/' + $(this).data("somedata")
}
]
});
Понятное дело, $(this) в таком случае — undefined.
Как поступить? Как передать плагину информацию из data-атрибута конкретного (используемого в данный момент времени) DOM элемента?
Т.е. я хочу, чтобы при вызове контекстного меню 5 строки таблицы (в data-somedata атрибуте которой хранится "tr_5") в "действии 2", например, генерировалась ссылка "/someaction/tr_5".
UPD1: С JSFiddle можно поиграться
здесь.
UPD2: Решение найдено. JSFiddle обновлен.
$("table tr").each(function() {
$(this).bootstrapContextMenu({
items: [
{
title: "Действие 1",
target: function() { alert( $(this).data("somedata") ); }
},
{
title: "Действие 2",
target: '/someaction/' + $(this).data("somedata")
}
]
});
});