在克隆jquery上更改按钮id的id

时间:2014-04-21 10:53:30

标签: jquery jquery-ui dom

<div id="del2">
<textarea placeholder="School" class="form-control input-lg" name="message2" id="message2" rows="1" cols="30">School</textarea>
 <button id="delete1" type="button" class="btn btn-default">Delete this Widget</button></div>

$("#"+divid) .clone().attr('id', 'del'+ value).insertAfter($("#"+divid)).find('textarea').attr('name', 'message'+ value).attr('id', 'message'+ value).find("button").button().attr('id', 'delete'+value);

我能够在克隆时更改div和textarea的id,但问题是我无法更改按钮ID的ID

1 个答案:

答案 0 :(得分:1)

这是因为您试图在<button>元素中找到<textarea>。我缩进了代码以使其更具可读性:

$("#"+divid) 
.clone()
.attr('id', 'del'+ value)
.insertAfter($("#"+divid))
.find('textarea')
    .attr('name', 'message'+ value)
    .attr('id', 'message'+ value)
    .find("button")  // Problem is here - you are finding <button> in <textarea>
        .button()
        .attr('id', 'delete'+value);

完成使用.end()提取的元素后,尝试使用.find()(请参阅documentation),以便返回上一个选定的对象。此外,您实际上可以使用对象组合两个.attr()方法:

$('#'+divid) 
.clone()
.attr('id', 'del'+ value)
.insertAfter($('#'+divid))
.find('textarea')
    .attr({
        'name': 'message'+ value,
        'id': 'message'+ value
     })
    .end() // Forces return to previously matched elements, i.e. the cloned element
.find('button')
    .button()
    .attr('id', 'delete'+value);