<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);
Я могу изменить id div и textarea на клоне, но проблема в том, что я не могу изменить идентификатор id кнопки.
Это потому, что вы пытаетесь найти <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()
, чтобы вернуть предыдущий выбранный объект. Кроме того, вы можете комбинировать два .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);