jQuery every 循环重命名 ID 的每个实例

发布于 2024-11-28 08:32:36 字数 505 浏览 0 评论 0原文

我有一个页面正在表中创建动态创建的行,其中输入的 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++;
});

我认为代码应该工作的方式是在固定速率 ID 的每个实例的固定速率一词的末尾添加 1,2,3,...。 (即fixedRate1,fixedRate2,...)

我需要使用while循环吗?我尝试了很多不同的事情,包括 while 循环,并成功地一次又一次地使我的浏览器崩溃。所以现在我正在寻求你的帮助!

谢谢!!!

I have a page that is creating dynamically created rows in a table with an input with an ID "fixedRate"

I am trying to rename each instance of the fixedRate id. This is only working for the first instance of the id with my current code.

Here is the code:

var amountRows = $("#billTasks > tr").size();
var i=1;


$("#fixedRate").each(function(){

if (i == amountRows) {
    return false; 
}
    this.id = this.id + i;
    i++;
});

The way I think the code should work is adding a 1,2,3,... at the end of the word fixedRate for each instance of the fixedRate ID. (i.e. fixedRate1, fixedRate2,...)

Do I need to use a while loop? I have tried many different things including a while loop and have managed to crash my browser over and over. So now I am looking for your help!

thanks!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

笑着哭最痛 2024-12-05 08:32:36

当使用 id 选择器时,jQuery 仅返回第一个实例。

每个 id 值在文档中只能使用一次。如果为多个元素分配了相同的 ID,则使用该 ID 的查询将仅选择 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);
});

When using the id selector, jQuery only returns the first instance.

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/

Since only one element is returned, your each loop only runs once.

You have two possible solutions. You can either update the logic in your script that is automatically generating the fixedRate id so that it generates unique ids or you can have that script set a class of fixedRate instead of an id. You can then loop through each class and assign a unique id to it.

$(".fixedRate").each(function(i) {
    var row = $(this)
    row.attr('id', 'fixedRate' + i);
});
暖伴 2024-12-05 08:32:36

如果您想要一个广泛的组,标识符主要用于挑选出元素。
我建议您将 id 转换为一个类,例如

<a class="test"></a>

然后您可以使用选择器访问所有元素

$(".test") // gathers all elements that contain that class

,如果您想枚举所有元素,您可以在回调中使用带有两个参数的 every 函数

$.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
});

Identifiers are mainly for singling out elements, if you want a wide group.
I suggest you convert the id into a class such as

<a class="test"></a>

Then you can access all elements by using the selector

$(".test") // gathers all elements that contain that class

also if you want to enumerate all the elements you can use the each function with two parameters in the callback

$.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
});
↘人皮目录ツ 2024-12-05 08:32:36

这是行不通的,您首先必须拥有唯一的 ID。
或者不要使用 id="fixedRate",而是使用 class="fixedRate" 并使用 $(".fixedRate") 代替。
发布了一个示例 jsfiddle http://jsfiddle.net/playerace/L4szw/ ,并注意该警报只出现一次。

This will not work, you either have to have unique IDs in the first place.
Or instead of having id="fixedRate", make it class="fixedRate" and use $(".fixedRate") instead.
Posted a sample jsfiddle http://jsfiddle.net/playerace/L4szw/ , and take notice that alert only comes out once.

甩你一脸翔 2024-12-05 08:32:36

试试这个:

$(".fixedRate").each(function(i){
    var $this = $(this)
    $this.attr('id','fixedRate' + i);
});

您不需要注意行数。

并使用一个类来调用所有费率,然后分配一个id。

Try this:

$(".fixedRate").each(function(i){
    var $this = $(this)
    $this.attr('id','fixedRate' + i);
});

You dont need to look out for the amount of rows.

And use a class to call all the rates and then assign a id.

爱你不解释 2024-12-05 08:32:36

您也许可以尝试使用类似于:

$('tbody tr[id^="fixedRate"]').each(
    function(i){
        this.id = 'fixedRate' + i;
    });

JS Fiddle demo 的内容。

You could perhaps try using something akin to:

$('tbody tr[id^="fixedRate"]').each(
    function(i){
        this.id = 'fixedRate' + i;
    });

JS Fiddle demo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文