0

如果用户他/她自己需要,我正在处理的项目需要其文本区域需要复制的形式。当单击按钮选择器#AddAnswer时,该元素被克隆并附加到#mp。我一直在尝试使用以下 JQuery 代码分配 ID:

$('#AddAnswer').click(
    function() {
        for(var i=0; i<=10;i++)
            $clone=$('textarea[name="antwoord"]:first').clone().attr('id', 'list'+i);
            console.log($clone);
            $('#mp').append($clone);
            return false;
});

不幸的是,这仅在选择器“#line”后面分配了数字 10。谁能帮我稍微调整一下这段代码,以便在克隆元素时 ID 只增加 1?

4

3 回答 3

0

我会根据你已经拥有的元素数量生成一个新索引

$('#AddAnswer').on("click",function() {
    var idx = $('textarea[name^="antwoord"]').length+1,
        $clone = $('textarea[name^="antwoord"]:first').clone().attr('id', 'antwoord_'+idx );
    $('#mp').append($clone);
    return false;
});

在http://fiddle.jshell.net/Uj5W7/2/上测试

另一种可能性是与index()

$('#AddAnswer').on("click",function() {
    var idx = $('textarea[name^="antwoord"]:last').index()+1,
        $clone = $('textarea[name^="antwoord"]:first').clone().attr('id', 'antwoord_'+idx );
    $('#mp').append($clone);
    return false;
});

在http://fiddle.jshell.net/Uj5W7/3/上测试

于 2013-10-24T13:07:05.553 回答
0

尝试这样的事情

            $('#AddAnswer').click(function() {
                for(var i=0; i<=10;i++)
                {
                    $clone=$('textarea[name="antwoord"]:first').clone().attr('id', 'list'+i);
                    $('#mp').append($clone);
                }
                return false;
            });
于 2013-10-24T13:07:17.377 回答
0

试试下面的代码:

//Defaults to 1
var numAnswers = 1;

$('#AddAnswer').click(function() {
    //Gets the clone and sets the ID to be list + Number of Answers
    $clone = $('textarea[name="antwoord"]:first').clone().attr('id', 'list'+numAnswers);
    console.log($clone);
    $('#mp').append($clone);
    //Add 1 to number of answers
    numAnswers += 1;

    return false;
});

这将在每次单击 AddAnswer 按钮时向控件添加一个文本区域。

如果您想一次添加多个,请尝试以下操作:

//Defaults to 1
var numAnswers = 1;

$('#AddAnswer').click(function() {
    var numToAdd = 10;
    var startNum = numAnswers + 1;
    var endNum = numToAdd + numAnswers;        

    for(var i=startNum; i <= endNum;i++) {
        //Gets the clone and sets the ID to be list + current Answer number
        $clone = $('textarea[name="antwoord"]:first').clone().attr('id', 'list'+i);
        console.log($clone);
        $('#mp').append($clone);
        //Add 1 to number of answers
        numAnswers += 1;            
    }
    return false;
});

第二种方法一次添加 10 个项目,并将添加到项目的数量,即第一次它将添加最多 11 个项目,然后最多添加 21 个项目,等等。

于 2013-10-24T12:41:18.390 回答