当包含在slickgrid单元格中时,jQuery单击事件不会为锚点触发

时间:2013-10-21 14:35:19

标签: javascript hyperlink jquery slickgrid

我有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单元格中的超链接触发点击处理程序的任何建议?

3 个答案:

答案 0 :(得分:0)

我没有使用过slickgrid,但我怀疑你在填充网格之前附加了事件处理程序。您可以加入onGridDataLoaded或类似事件吗?

示例here使用类似:

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

答案 1 :(得分:0)

$('PARENT_ELEMENT').on('click','a[rel=XYZ]',function (e) {
    $(this).replaceWith('some html');
});

绑定活动时,请确保'PARENT_ELEMENT'存在。最安全的方法是使用'body'document作为'PARENT_ELEMENT'

答案 2 :(得分:0)

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

$(document).on('click', 'a[rel=XYZ]', function (e) {
    $(this).replaceWith('some html');
});