调用函数后JQuery不工作

调用函数后JQuery不工作,jquery,function,html-table,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+

我遇到了一个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将不再适用于新单元格

有没有办法不使用循环就解决这个问题


*以上是一个实际有目的的程序的基本版本,我承认它是无用的。然而,解决方案适用于所有领域。

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


这将
TableHolder
元素中的click事件委托给所有当前和未来的
td
s。

问题是因为在
MakeTable
函数中重建
table
元素后,
td
事件绑定到的
click
元素不再存在

您需要使用委托事件处理程序。试试这个:

MakeTable();
$('#TableHolder').on('click', 'td', function(){
    MakeTable();
}
var MakeTable = function() {
    var $tableHolder = $('#TableHolder').empty();
    var tablebuild = "<table><tbody><tr>";
    for (i=0; i<3; i++)
    {
        tablebuild += "<td></td>";
    }
    tablebuild += "</tr></tbody></table>";
    $tableHolder.html(tablebuild);
}
此外,您使用的是本机JS和jQuery的奇怪混合。试试这个:

MakeTable();
$('#TableHolder').on('click', 'td', function(){
    MakeTable();
}
var MakeTable = function() {
    var $tableHolder = $('#TableHolder').empty();
    var tablebuild = "<table><tbody><tr>";
    for (i=0; i<3; i++)
    {
        tablebuild += "<td></td>";
    }
    tablebuild += "</tr></tbody></table>";
    $tableHolder.html(tablebuild);
}
var MakeTable=function(){
var$tableHolder=$('#tableHolder').empty();
var tablebuild=“”;

对于(i=0;由于您正在重写表格单元格,因此需要idelegation解决了此问题,再次感谢!感谢您的建议,它们非常有效