У меня есть slickgrid setup, чтобы использовать RowSelectionModel
вместе со столбцом, содержащим настройку гиперссылки, используя customFormatter (слегка модифицированный для защиты невинных):
function linkFormatter(row, cell, value, columnDef, dataContext) {
return "<a href='#' rel='XYZ'>View</a>";
}
Использование следующего обработчика событий кликов:
$('a[rel=XYZ]').on('click',function (e) {
$(this).replaceWith('some html');
});
Вышеупомянутый обработчик никогда не срабатывает для связей внутри сетки. Если я создаю ссылку за пределами slickgrid, она отлично работает, показывая, что мой селектор и функция действительны.
Если я подключу функцию JavaScript в тег <a>
она работает нормально, но я бы действительно не сохранил js ненавязчиво. Любые рекомендации о том, что я могу сделать, чтобы запустить обработчик кликов для гиперссылок, встроенных в ячейку slickgrid?
$('PARENT_ELEMENT').on('click','a[rel=XYZ]',function (e) {
$(this).replaceWith('some html');
});
Просто убедитесь, что 'PARENT_ELEMENT'
существует, когда вы связываете свое событие. Самый безопасный способ - использовать 'body'
или document
как 'PARENT_ELEMENT'
.
Как сказал Тим, вы можете использовать нечто вроде этого:
$(document).on('click', 'a[rel=XYZ]', function (e) {
$(this).replaceWith('some html');
});
Я не использовал slickgrid, но подозреваю, что вы привязываете обработчик событий до заполнения сетки. Есть ли событие onGridDataLoaded
или подобное событие, в которое вы можете подключиться?
В примере здесь используется нечто вроде:
loader.onDataLoaded.subscribe(function () {
// rewire handlers
})