循环中的Javascript动态连续ID与它在html中出现的次数有关
Javascript dynamic consecutive ID within a loop in relation to the number of times it appears th in html
我正在使用"数据表",我想循环我根据文档中出现的"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);
}
这是一个简化的小提琴,说明了差异。
相关文章:
- 使用jQuery根据动态生成的html动态添加html
- HTML动态更新滑块输入
- 无法从HTML动态表中获取数据
- Python/JavaScript/HTML 动态创建计算机网络图
- 从 html 动态调用 javascript 对象函数
- 通过内部HTML动态创建日历不起作用
- 如何将节点内容从 xml 复制到硬编码的 html(动态到原始 html)
- 为什么我无法使用jQuery将HTML动态添加到页面
- 如何读取html表中复选框的值,该表是作为内部html动态插入到表单元格中的
- 如何使用Javascript获取HTML动态用户输入的值
- 从html动态加载angularjs控制器
- Html动态错误javascript Uncaught TypeError:$不是函数
- 如何将html动态嵌入到框架标记中
- HTML动态裁剪
- 使用jQuery和HTML动态创建标签,并使用jQuery访问其文本值
- HTML动态/响应式元素定位
- 我如何使用下面的html动态创建wordcloud为我的android应用程序
- 使用.html()动态更改数据后单击function
- JavaScript中的Html动态表
- JS/HTML——动态创建带有选项的select元素