0

我有 slickgrid 设置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 单元格中的超链接的任何建议?

4

3 回答 3

0

我没有使用 slickgrid,但我怀疑您在填充网格之前附加了事件处理程序。有没有可以onGridDataLoaded参与的或类似的活动?

这里的例子使用了类似的东西:

loader.onDataLoaded.subscribe(function () {
    // rewire handlers
}) 
于 2013-10-21T14:41:34.720 回答
0
$('PARENT_ELEMENT').on('click','a[rel=XYZ]',function (e) {
    $(this).replaceWith('some html');
});

只需确保'PARENT_ELEMENT'在绑定事件时存在。最安全的方法是使用'body'or documentas 'PARENT_ELEMENT'

于 2013-10-21T14:43:35.883 回答
0

正如蒂姆所说,你可以使用这样的东西:

$(document).on('click', 'a[rel=XYZ]', function (e) {
    $(this).replaceWith('some html');
});
于 2013-10-21T14:50:31.270 回答