调用函数后JQuery不工作
我遇到了一个Javascript/JQuery问题,我希望您知道如何解决 假设我定义了这个函数,它在'div'中构建了一个id为'TableHolder'的表:调用函数后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+
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解决了此问题,再次感谢!感谢您的建议,它们非常有效