创建具有唯一 ID 的动态 div - jQuery

Posted

技术标签:

【中文标题】创建具有唯一 ID 的动态 div - jQuery【英文标题】:Create Dynamic div with unique IDs - jQuery 【发布时间】:2011-03-25 21:06:06 【问题描述】:

如果我解释得不够好,请告诉我,因为我只是想一想就感到困惑。

我应该能够单击“添加产品”按钮并让它每次都创建一个唯一的 div。例如,第一个 div 的 ID 为 #product1,然后是 #product2 等等。

真正棘手的部分是在 div 中有两个输入字段,都是常规文本输入。这些也需要有唯一的 ID,以便我可以使用其中放置的内容。

如果您有任何解决方案,请告诉我。谢谢, 卡森

【问题讨论】:

您将这些动态 ID 用于什么目的? 每个 div 中都有唯一的文本输入字段,然后将用于将标题、产品和联系信息等信息输出到 PDF。我想 ID 并不重要,但我可以使用相同的过程来生成唯一名称。 【参考方案1】:

您可以只使用递增的 ID 变量,如下所示:

var i = 1;
$("#addProduct").click(function() 
  $("<div />",  "class":"wrapper", id:"product"+i )
     .append($("<input />",  type: "text", id:"name"+i ))
     .append($("<input />",  type: "text", id:"property"+i ))
     .appendTo("#someContainer");
  i++;
);

You can give it a try here,这是一个非常笼统的答案,但你明白了,每次添加项目后增加变量即可。

【讨论】:

PS 我显然是新来的,所以你如何让代码看起来像代码哈哈 好吧,这有点用。我似乎无法将类或 ID 名称应用于创建的 div。我也完全复制了代码。我在其他地方看到有人使用 className:"random" 而不是 "c​​lass" 但都没有用。有什么想法吗? @Carson - 我在这里为该类提供了一些样式:jsfiddle.net/nick_craver/TTHDQ/12 只需将上面代码中的wrapper 替换为您希望 div 具有的任何类或类:) 仍然无法使其正常工作,但我为你们中的人找到了解决方法。下面为每个创建的 div 添加一个类和 id: $('').addClass('product').attr('id', 'product'+i) 感谢您的解决方案,我正在尝试使用这种结合添加类样式 onmouseover 和 onmouseout,它可以在 Firefox 中使用,但无法在 IE 和 Google 中使用,您知道该怎么做吗?这是我使用的代码 'code' jQuery("", "class": "wrapper", id: "product" + i, "onmouseover": "javascript:Highlight(this. id);", "onmouseout": "javascript:Lowlight(this.id);" ) .append(jQuery("", type: "text", id: "name" + i ))......'代码'【参考方案2】:

好的。这是一个非常古老的帖子,但我认为如果您遇到类似问题,它可能会有所帮助。我在 jQuery (see here) 中遇到了 .uniqueId()。

它检查元素是否已经有一个id,如果没有,它会为其分配一个唯一的id。缺点是您不能为其指定“自定义 ID 名称”(例如 product_1、product_2 等)。分配的 id 类似于 ui-id-1、ui-id-2 等。

要分配一个唯一的 id,你可以这样 -

$("<div class='someDivConntet'></div>").insertAfter($(this)).uniqueId(); 

只要确保您没有在元素上设置 id 即可。

【讨论】:

请注意,此方法可从 jQuery 1.9 开始 感谢您展示不同但有趣的方式。【参考方案3】:
$(function()
    var pcount = icount = 0;

    $('<div/>', 
       id:   'product' + pcount++
    ).append($('<input/>', 
       id:   'input' + icount++
    )).append($('<input/>', 
       id:   'input' + icount++
    )).appendTo(document.body);
);

【讨论】:

【参考方案4】:

一般情况下,您不需要以这种方式使用 ID。

一旦你使用 Javascript 创建了新元素,你就已经有了一个可以传递给函数等的对象。你当然不需要传递 ID 就可以传递给 @987654321 @

【讨论】:

可能将值提交到服务器 :) 所以通常你需要一个 ID 或一个名字:) ID 与表单提交没有任何关系,但如果是这种情况,则需要生成名称是对的【参考方案5】:

我正在使用我制作的这个

$.fn.uniqueId = function(idlength)
    var charstoformid = '_0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
    if (! idlength) idlength = 10;

    var getId = function() 
        var uniqid = '';
        for (var i = 0; i < idlength; i++) 
            uniqid += charstoformid[Math.floor(Math.random() * charstoformid.length)];
        
        return uniqid;
    

    return $(this).each(function()
        var id = getId()

        while ( $("#"+id).length ) 
            id = getId();
        
        $(this).attr("id", id);         
    );

它具有生成随机字符链的功能,然后确保生成的字符链是唯一的(有 0,000001% 的可能性 - 但这是可能的),然后更改 id。

【讨论】:

【参考方案6】:

您可以使用 Just 增加变量并附加来创建唯一的 DIV ID 代码,如下所示

var x = 1;
var wrapper = $('.field_wrapper'); //Input field wrapper your div Add in this Class


var fieldtext = '<div ID="product_'+x+'"><label id="label_'+x+'" for="field_'+x+'"></label><input type="text" id="field_'+x+'" name="field_'+x+'" value=""/></div>'; //New input field html 

$(wrapper).append(fieldtext); // Add field html
x++;

【讨论】:

以上是关于创建具有唯一 ID 的动态 div - jQuery的主要内容,如果未能解决你的问题,请参考以下文章

为每个具有类名的 div 动态创建按钮,并创建显示/隐藏单击功能

生成具有唯一名称和 ID 的动态输入

jQuer的实用语法

在具有相同类的一组 div 中悬停在单个 div 上时显示覆盖

为创建的 div 分配唯一 ID,然后使用 jquery 引用

动态添加/删除表单组并为每个输入提供唯一的 ID 和名称