Javascript 如何在.hide()之后对剩余的表行重新编号
Javascript会增加静态表中动态生成的行中的每个可见数字 jQuery在单击时会尽职尽责地隐藏每一行,但是,当然,数字不会改变。当访问者删除了不需要的行后,如何使用jQuery对行重新编号?我希望用户单击“重新编号”以正确重新编号其余行。我所做的不起作用:- 非常感谢您的帮助Javascript 如何在.hide()之后对剩余的表行重新编号,javascript,jquery,html-table,Javascript,Jquery,Html Table,Javascript会增加静态表中动态生成的行中的每个可见数字 jQuery在单击时会尽职尽责地隐藏每一行,但是,当然,数字不会改变。当访问者删除了不需要的行后,如何使用jQuery对行重新编号?我希望用户单击“重新编号”以正确重新编号其余行。我所做的不起作用:- 非常感谢您的帮助 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <sc
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
var keepTrack = 1;
</script>
<table>
<tr><td colspan="2" id="renumber">renumber</td></tr>
<tr id="sWH1">
<td>
<script>
document.write(keepTrack);keepTrack++;
</script></td>
<td>someWordsHere</td></tr>
<script>
$(document).ready(function() {
$("#sWH1").click(function() {
$("#sWH1").hide(100);});
});</script>
<tr id="sWH2">
<td>
<script>
document.write(keepTrack);keepTrack++;
</script></td>
<td>someWordsHere</td></tr>
<script>
$(document).ready(function() {
$("#sWH2").click(function() {
$("#sWH2").hide(100);});
});</script>
<tr id="sWH3">
<td>
<script>
document.write(keepTrack);keepTrack++;
</script></td>
<td>someWordsHere</td></tr>
<script>
$(document).ready(function() {
$("#sWH3").click(function() {
$("#sWH3").hide(100);});
});</script>
</table>
<script language="JavaScript" type="text/JavaScript">
$(document).ready(function() {
$("#renumber").click(function() {
'magically renumber the remaining table rows'
});
});
</script>
直截了当的答案
要对行重新编号,您可以使用each方法,该方法允许您在一组元素上迭代(在本例中为行),并提供i枚举器参数
一个普遍的例子:
$(some-tr-selector).each(function(i) {
$(this).children(some-td-selector).text(i+1);
});
现在要做到这一点,您需要定义更好的选择器。当前代码的问题是选择器太具体。这将阻止您创建常规事件处理程序,而不是为每行创建单击处理程序
如何改进代码
考虑为相关编号行设置一个类。这将允许您为所有行创建一个单击处理程序,并使相关行在重新编号时更易于选择
例如:
$(document).ready(function() {
// Number all rows onload
$('table tr.numbered_row').each(function(i) {
$(this).children('.row_number').text(i+1);
// Row click handler
}).on('click', function() {
// Hide current row
$(this).hide(100);
// Renumber visible rows
$('table tr.numbered_row:visible').each(function(i) { // Iterate over all _visible_ rows
$(this).children('.row_number').text(i+1);
});
});
});
HTML
请注意,通过添加两个编号为row和row的类,我们可以在一个代码块中高效地完成所有工作:行的初始编号、隐藏行的单击处理程序以及重新编号操作
更一般的方法
如果您愿意,您可以通过链接each和on方法以及在每次隐藏行时处理on中的重新编号,使其更加通用和高效
例如:
$(document).ready(function() {
// Number all rows onload
$('table tr.numbered_row').each(function(i) {
$(this).children('.row_number').text(i+1);
// Row click handler
}).on('click', function() {
// Hide current row
$(this).hide(100);
// Renumber visible rows
$('table tr.numbered_row:visible').each(function(i) { // Iterate over all _visible_ rows
$(this).children('.row_number').text(i+1);
});
});
});
直截了当的答案
要对行重新编号,您可以使用each方法,该方法允许您在一组元素上迭代(在本例中为行),并提供i枚举器参数
一个普遍的例子:
$(some-tr-selector).each(function(i) {
$(this).children(some-td-selector).text(i+1);
});
现在要做到这一点,您需要定义更好的选择器。当前代码的问题是选择器太具体。这将阻止您创建常规事件处理程序,而不是为每行创建单击处理程序
如何改进代码
考虑为相关编号行设置一个类。这将允许您为所有行创建一个单击处理程序,并使相关行在重新编号时更易于选择
例如:
$(document).ready(function() {
// Number all rows onload
$('table tr.numbered_row').each(function(i) {
$(this).children('.row_number').text(i+1);
// Row click handler
}).on('click', function() {
// Hide current row
$(this).hide(100);
// Renumber visible rows
$('table tr.numbered_row:visible').each(function(i) { // Iterate over all _visible_ rows
$(this).children('.row_number').text(i+1);
});
});
});
HTML
请注意,通过添加两个编号为row和row的类,我们可以在一个代码块中高效地完成所有工作:行的初始编号、隐藏行的单击处理程序以及重新编号操作
更一般的方法
如果您愿意,您可以通过链接each和on方法以及在每次隐藏行时处理on中的重新编号,使其更加通用和高效
例如:
$(document).ready(function() {
// Number all rows onload
$('table tr.numbered_row').each(function(i) {
$(this).children('.row_number').text(i+1);
// Row click handler
}).on('click', function() {
// Hide current row
$(this).hide(100);
// Renumber visible rows
$('table tr.numbered_row:visible').each(function(i) { // Iterate over all _visible_ rows
$(this).children('.row_number').text(i+1);
});
});
});
下面是另一个解决方案: 这是您的代码,改动很少:表的id=myTable “神奇地重新编号剩余的表行”已被替换为
$('#myTable tr[id]:visible').each(function(i){
$(this).find('td:first').text(i+1);
})
下面是另一个解决方案: 这是您的代码,改动很少:表的id=myTable “神奇地重新编号剩余的表行”已被替换为
$('#myTable tr[id]:visible').each(function(i){
$(this).find('td:first').text(i+1);
})
请发布生成的HTML,而不是PHP。谢谢。这是正确的方式吗?请发布生成的HTML,而不是PHP。谢谢。这是正确的方法吗?好的,波阿斯,我已经完全部署好了,非常顺利。高效地编写,并实时节省时间。我只是想最后一次说声谢谢。@AllThisOnAnACER仅供参考,用一种更广义的方法更新了这个案例的答案。谢谢Boaz,但我不会碰它。我知道!好的,波阿斯,我已经完全部署好了,非常顺利。高效地编写,并实时节省时间。我只是想最后一次说声谢谢。@AllThisOnAnACER仅供参考,用一种更广义的方法更新了这个案例的答案。谢谢Boaz,但我不会碰它。我知道!这也很有趣。我将保留这一个作为参考,但老实说,我很高兴波阿斯提供了什么,我只是移动到下一个问题。谢谢你,莱奥因福!这也很有趣。我将保留这一个作为参考,但老实说,我很高兴波阿斯提供了什么,我只是移动到下一个问题。谢谢你,莱奥因福!