gpt4 book ai didi

循环内的 Javascript 动态连续 ID 与它在 html 中出现的次数有关

转载 作者:行者123 更新时间:2023-11-30 05:43:23 27 4
gpt4 key购买 nike

我正在使用“数据表”,我想循环我根据文档中出现的“th”的数量自动生成 ID,以避免写入:

$("#col1_filter").keyup(function() { fnFilterColumn(0) } ); 
$("#col1_regex").click(function() { fnFilterColumn(0) } );
$("#col1_smart").click(function() { fnFilterColumn(0) } ) ;

对于每个生成的 HTML 文档。

原始资料在这里: http://datatables.net/examples/api/regex.html

我正在尝试使用这段代码,但总是有最后一个值:

$(document).ready(function() {     
$("#global_filter").keyup( fnFilterGlobal );
$("#global_regex").click( fnFilterGlobal );
$("#global_smart").click( fnFilterGlobal );

var dt = $(".table thead th").length;
alert(dt);
var j;
var w;
for (var i=0;i<dt;++i)
{
j=i;
k= j+1;
alert(j);
alert(k);
$("#col"+k+"_filter").keyup(function() { fnFilterColumn(j) } );
$("#col"+k+"_regex").click(function() { fnFilterColumn(j) } );
$("#col"+k+"_smart").click(function() { fnFilterColumn(j) } ) ;
}
} );

最佳答案

您需要创建 j 的本地副本,否则您正在使用共享副本(即 fnFilterColumn(j) 指的是相同版本的 j 你在每次迭代中更新)。为此,您必须围绕 j 创建一个闭包(或称它为 i,这并不重要):

for (var i=0;i<dt;++i)
{
(function(j) {
var k= j+1;
alert(j);
alert(k);
$("#col"+k+"_filter").keyup(function() { fnFilterColumn(j) } );
$("#col"+k+"_regex").click(function() { fnFilterColumn(j) } );
$("#col"+k+"_smart").click(function() { fnFilterColumn(j) } ) ;
})(i);
}

Here's说明差异的简化 fiddle 。

关于循环内的 Javascript 动态连续 ID 与它在 html 中出现的次数有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com