我有一个页面在表格中创建动态创建的行,其输入ID为“fixedRate”
我正在尝试重命名fixedRate id的每个实例。这仅适用于我当前代码的id的第一个实例。
以下是代码:
var amountRows = $("#billTasks > tr").size();
var i=1;
$("#fixedRate").each(function(){
if (i == amountRows) {
return false;
}
this.id = this.id + i;
i++;
});
我认为代码应该工作的方式是在fixedRate ID的每个实例的单词fixedRate的末尾添加1,2,3,.... (即fixedRate1,fixedRate2,......)
我是否需要使用while循环?我尝试了很多不同的东西,包括一个while循环,并设法让我的浏览器一遍又一遍地崩溃。所以现在我正在寻找你的帮助!
感谢!!!
答案 0 :(得分:2)
使用id选择器时,jQuery只返回第一个实例。
Each id value must be used only once within a document. If more than one element has been assigned the same ID, queries that use that ID will only select the first matched element in the DOM.
http://api.jquery.com/id-selector/
由于只返回一个元素,因此每个循环只运行一次。
您有两种可能的解决方案。您可以更新脚本中自动生成fixedRate id的逻辑,以便生成唯一ID,或者您可以让该脚本设置一个fixedRate类而不是id。然后,您可以遍历每个类并为其分配唯一的ID。
$(".fixedRate").each(function(i) {
var row = $(this)
row.attr('id', 'fixedRate' + i);
});
答案 1 :(得分:0)
标识符主要用于挑选元素,如果你想要一个广泛的组。 我建议你将id转换成类,如
<a class="test"></a>
然后,您可以使用选择器
访问所有元素$(".test") // gathers all elements that contain that class
如果你想枚举所有元素,你可以在回调中使用带有两个参数的每个函数
$.each($(".test"), function(a,b){
//a is the index
//b is the element
b.attr("id", a); // to set each element id to their index
});
答案 2 :(得分:0)
你也许可以尝试使用类似的东西:
$('tbody tr[id^="fixedRate"]').each(
function(i){
this.id = 'fixedRate' + i;
});
答案 3 :(得分:0)
这不起作用,您必须首先拥有唯一的ID
或者不是id="fixedRate"
,而是将其class="fixedRate"
改为使用$(".fixedRate")
。
发布了一个示例jsfiddle http://jsfiddle.net/playerace/L4szw/,并注意到警报只出现一次。
答案 4 :(得分:0)
试试这个:
$(".fixedRate").each(function(i){
var $this = $(this)
$this.attr('id','fixedRate' + i);
});
你不需要注意行数。
并使用课程调用所有费率,然后分配一个ID。