重置paragrapgh的更改

时间:2018-11-30 16:21:36

标签: jquery

我正在努力显示跨度中出现的更改的段落。最初,这是HTML的代码。

<div>
   <p><span id="spnOne">This text will change.</span></p>
</div>

我将原始文本更改为:

之前的文本++前面的文本-跨度的新文本== back @@ Text后面的文本通过使用append,prepend,before和after来实现。

我有这个按钮。

<div>
   <button id="btnResetChanges">Reset Paragraph Text</button>
</div>

当我单击此按钮时,我想更改所有发生的更改,以使其恢复到原始状态。

我试图做

$("#btnResetChanges").click(function () {
  ($("#spnOne").reset());

}); 

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用cookie和本地存储,但是我建议您使用data-* attributes存储原始段落,然后在您要重置时调用它,例如:

$('#spnOne').append('++++').prepend('----');

$('#btnResetChanges').click(function() {
  $('#spnOne').text($('#spnOne').data('original'));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <p><span id="spnOne" data-original="This text will change.">This text will change.</span></p>
</div>
<div>
  <button id="btnResetChanges">Reset Paragraph Text</button>
</div>

答案 1 :(得分:0)

//if you don't want to preload the data fields in the html
//you can set them with the javscript
var $changable = $('.changable').each(function(){
  $(this).data('originalHtml', this.innerHTML);
});

//when the button is clicked, change all the fields back to what is
//in their original data field
$('#btnResetChanges').on('click', function(){
  $changable.html(function(index, element){
    return $(this).data('originalHtml');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <p><span class="changable" contenteditable="true">This text will change.</span></p>
  <p><span class="changable" contenteditable="true">This text will change.</span></p>
  <p><span class="changable" contenteditable="true">This text will change.</span></p>
</div>


<div>
  <button id="btnResetChanges">Reset Paragraph Text</button>
</div>