调用函数后 JQuery 不工作

标签 jquery function html-table

我遇到了 Javascript/JQuery 问题,希望您知道如何解决。

假设我定义这个函数,在“div”内部构建一个 id 为“TableHolder”的表格:

MakeTable = function()
{
    document.getElementById('TableHolder').innerHTML = "";
    var tablebuild = "<table><tbody><tr>";
    for (i=0; i<3; i++)
    {
        tablebuild += "<td></td>";
    }
    tablebuild += "</tr></tbody></table>";
    document.getElementById('TableHolder').innerHTML = tablebuild;
}

我在文档准备好时调用此函数,并在单击任何单元格时告诉 JQuery 重建表格。

$(document).ready(function() {
    MakeTable();
    $('td').click(function(){
        MakeTable();
    }
});

单击某个单元格并且 MakeTable() 重建表格后,JQuery 将不再适用于新单元格。

有没有办法在不使用循环的情况下解决这个问题?

*上面是一个程序的面包和黄油版本,实际上有一个目的,我认识到它所呈现的毫无用处。然而,该解决方案适用于所有领域。

最佳答案

是的,有!您只需要使用一种事件绑定(bind)技术,该技术将适用于现在和将来的所有元素(因为您正在销毁并重新创建表及其子项),使用所谓的事件委托(delegate)。以下是如何将其与 jQuery 连接起来(使用 on() ):

$(document).ready(function() {
    MakeTable();
    $('#TableHolder').on('click', 'td', function() {
        MakeTable();
    });
});

这会将 TableHolder 元素中的点击事件委托(delegate)给所有当前和 future 的 td

关于调用函数后 JQuery 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467234/

相关文章:

html - 根据第一列的值更改HTML表中的行背景

javascript - 所有浏览器中的 Highcharts 渲染问题

javascript - 使用 jQuery 在 Laravel Blade 上显示 Controller 变量

javascript - select 没有从 jQuery 触发任何事件

jquery - 单击按钮时暂时禁用悬停 (jQuery)

php - 需要了解php或sql的字符串匹配函数

c - 警告 : control reaches end of non-void function [-Wreturn-type]

html - 将两个元素与表格单元格的顶部和底部对齐

html - 需要帮助引用标记标签的 CSS 类

java - 在java流中重写算法更省力?