#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть элемент div, как показано ниже;
<div class="editableTxt" data-model-attr="myAttr" data-model-id="302">VALUE</div>
Я хочу, чтобы он был преобразован в
<input class="editBox" data-model-attr="myAttr" data-model-id="302" value="VALUE" />
Есть ли общий способ сделать то же самое?
Предположим, что я нахожусь внутри обратного вызова amp; $(this) представляет элемент div..
Комментарии:
1. Вы не можете изменить HTML?
Ответ №1:
Попробуйте
$('.editableTxt').each(function () {
var $input = $('<input/>').val($.trim(this.innerHTML));
$.each(this.attributes, function (i, attr) {
$input.attr(attr.name, attr.value);
});
$(this).replaceWith($input)
})
Демонстрация: скрипка
Ответ №2:
Попробуйте это: предполагая $(this)
, что <div class="editableTxt" data-model-attr="myAttr" data-model-id="302">VALUE</div>
$input = $('<input/>');
$input.attr('class',$(this).attr('class'));
$input.attr('data-model-attr',$(this).attr('data-model-attr'));
$input.attr('data-model-id',$(this).attr('data-model-id'));
$input.val($(this).text());
Ответ №3:
$(this).attr('class', 'editBox').val('VALUE');
Ответ №4:
Попробуйте это:
$(this).addClass("editBox").removeClass("editableTxt").attr("value", $(this).html()).html("");