Событие щелчка jQuery не запускается для привязки, если оно содержится в ячейке slickgrid

0

У меня есть 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?

Теги:
hyperlink
slickgrid

3 ответа

0
Лучший ответ
$('PARENT_ELEMENT').on('click','a[rel=XYZ]',function (e) {
    $(this).replaceWith('some html');
});

Просто убедитесь, что 'PARENT_ELEMENT' существует, когда вы связываете свое событие. Самый безопасный способ - использовать 'body' или document как 'PARENT_ELEMENT'.

0

Как сказал Тим, вы можете использовать нечто вроде этого:

$(document).on('click', 'a[rel=XYZ]', function (e) {
    $(this).replaceWith('some html');
});
  • 0
    ofc on должен быть присоединен к существующему элементу в DOM для работы с вновь добавленными элементами! Моя новая проблема - это такой вид работ, но мне нужно дважды щелкнуть ссылку, чтобы запустить, но, по крайней мере, это шаг вперед. Благодарю.
  • 0
    Я не могу воспроизвести вашу проблему. Можете ли вы предоставить jsfiddle? увидеть это jsfiddle.net/D9TYR/7
Показать ещё 2 комментария
0

Я не использовал slickgrid, но подозреваю, что вы привязываете обработчик событий до заполнения сетки. Есть ли событие onGridDataLoaded или подобное событие, в которое вы можете подключиться?

В примере здесь используется нечто вроде:

loader.onDataLoaded.subscribe(function () {
    // rewire handlers
}) 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню