【问题标题】:jQuery click event not firing for anchor when contained within slickgrid cell当包含在 slickgrid 单元格中时,jQuery 单击事件不会触发锚点
【发布时间】:2013-10-21 14:35:19
【问题描述】:

我有 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 函数挂接到 &lt;a&gt; 标记中,它可以正常工作,但我真的宁愿让我的 js 不引人注目。关于如何让点击处理程序触发嵌入在 slickgrid 单元格中的超链接的任何建议?

【问题讨论】:

    标签: javascript hyperlink jquery slickgrid


    【解决方案1】:
    $('PARENT_ELEMENT').on('click','a[rel=XYZ]',function (e) {
        $(this).replaceWith('some html');
    });
    

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

    【讨论】:

      【解决方案2】:

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

      here 的例子使用了类似的东西:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • ofc on 需要附加到 DOM 中的现有元素以对抗新添加的元素!我的新问题是这种作品,但我需要单击链接两次才能触发它,但至少这是向前迈出的一步。谢谢。
        • 我无法重现您的问题。你能提供一个jsfiddle吗?看到这个jsfiddle.net/D9TYR/7
        • 我正在使用的 checkboxselectcolumn 插件似乎存在问题。添加了插件的 fork jsfiddle.net/MA9nt
        • 尝试使用 mousedown 事件而不是单击
        猜你喜欢
        • 2017-02-14
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2019-06-22
        • 1970-01-01
        相关资源
        最近更新 更多