我需要为表格单元格指定数字,这些数字从单元格增加到单元格。我尝试了一个forloop但是在每次循环后将增量计数器分配给单元格的标题时遇到了问题。我有这个代码 -
$(function(){
var row = $('#seat_map tr:last td.freeSeat')
for(i=0; i<row.length; i++){
row.attr('title', i);
}
});
此代码仅在循环完成后将i的最终值分配给所有单元格的标题...而不是为标题分配“1,2,3”等。我应该补充说,表也是使用jquery动态生成的。为模糊的标题和描述道歉 - 我尽我所能!
由于
答案 0 :(得分:1)
你可以使用.each()
var row = $('#seat_map tr:last td.freeSeat');
$.each(row, function(index){
$(this).attr('title', index+1);
});
但实际上,你可以直接从选择器中完成。
$('#seat_map tr:last td.freeSeat').each(function(index) {
$(this).attr('title', index+1);
});
答案 1 :(得分:1)
“此代码仅在循环完成后将i的最终值分配给所有单元格的标题”
那是因为在每次迭代中你都要设置每个匹配元素的属性。 (row.attr('title',i)
对row
jQuery对象中的每个元素进行操作。)
如果你正在使用jQuery,你会发现使用它.each()
method而不是传统的for
循环更简单:
$(function(){
var rows = $('#seat_map tr:last td.freeSeat');
rows.each(function(i) {
$(this).attr('title',i);
});
});
除非您以后将其用于其他内容,否则您根本不需要rows
变量:
$(function(){
$('#seat_map tr:last td.freeSeat').each(function(i) {
$(this).attr('title',i);
});
});
但要使用for
循环,您可以使用eq()
method来访问当前项目:
$(function(){
var row = $('#seat_map tr:last td.freeSeat')
for(i=0; i<row.length; i++){
row.eq(i).attr('title', i);
}
});
这些方法中的任何一种都会以i
的{{1}}开头,如果您希望显示的编号以0
开头,请使用i+1
。
答案 2 :(得分:1)
使用jquery的.each()功能
.each()方法旨在使DOM循环结构简洁且不易出错。调用时,它会迭代属于jQuery对象的DOM元素。每次回调运行时,都会从0开始传递当前循环迭代。更重要的是,回调是在当前DOM元素的上下文中触发的,因此关键字this指的是元素。
<强> jQuery的:强>
$('#seat_map tr:last td.freeSeat').each(function(index){
$(this).attr('title', index+1)
})
答案 3 :(得分:0)
试试这个:
$(function(){
var row = $(document).children('#seat_map tr:last').find('td.freeSeat');
for(i=0; i<row.length; i++){
row.attr('title', i);
}
});
或者这个:
$(function(){
var row = $('#seat_map tr:last td.freeSeat', this);
for(i=0; i<row.length; i++){
row.attr('title', i);
}
});
正如您提到的 I should perhaps add that the table is dynamically generated using jquery