克隆jQuery时增加数组

时间:2012-05-15 12:24:21

标签: jquery clone

我有以下代码:http://jsfiddle.net/stomp/a8vjg/

除了我需要将select字段的名称作为extras [0],然后添加下一个的extras [1]等等之外,一切都运行良好。

有人可以帮忙吗?

干杯, 史蒂夫

3 个答案:

答案 0 :(得分:1)

首先,您应该使用" extras"来命名您的select元素。只... ...

<select name="extras">

然后使用

获取它
elemenets = $('[name=extras]')

它将是一个可以通过extras [0],extras [1],.....等访问的数组

答案 1 :(得分:0)

克隆时你需要这样:

case "add":
            var cnt=jqEl.parent().siblings().size();
            var cloned=tag.clone();
               $(cloned).find("input").val("")
                   .end()
                   .find('select').attr('name','extra['+cnt+']');

            tag.after(cloned);
            break;

检查工作fork(如果删除并添加,可能会重复)

没有重复项fiddle(如果删除节点,则无法确保序列号)

所以完美的解决方案可能是在[保存]按钮上添加ID,这里是solution

function save(e) {
        multiTags.find("select").each(function(i){
            $(this).attr('name','extras['+i+']');
        });

        var tags = multiTags.find("input.tag").map(function() {
            return $(this).val();
        }).get().join(',');
        alert(tags);
        return false;
    }

答案 2 :(得分:0)

你的意思是:

case "add":
                var newTag = tag.clone();
                var i = $("#multi").find("select").length;
                console.log(i);
                 newTag.find("select").attr("name", 'extras['+i+']');              
            tag.after(newTag.find("input").val("").end());
            break;

请参阅:jsFiddle