Изменить идентификатор кнопки на клон JQuery

0
<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 кнопки.

Теги:
dom

1 ответ

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(), чтобы вернуть предыдущий выбранный объект. Кроме того, вы можете комбинировать два .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);
  • 0
    ты прав ... его идеально ... я пропустил конец ()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню