使用html()

时间:2018-04-10 06:54:22

标签: javascript jquery html

我有一个特定的问题,我需要从服务器呈现一个html字符串并将其显示给用户。然后,用户单击复选框,然后将其转换回html字符串并将其保存在服务器上。

问题是在用户单击复选框后,转换的HTML字符串不包含checked属性。

这是一个片段



$("button").on("click", function(){

   console.log($("#container").html());

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
    <input type="checkbox" id="checkbox"/>
    <button> Test </button>
</div>
&#13;
&#13;
&#13;

但是当我手动点击复选框并单击按钮并检查控制台日志时,看不到HTML字符串中的已检查属性

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

在更改时由checked手动设置.attr('checked', 'checked')属性:

$("button").on("click", function() {

  console.log($("#container").html());

});

$('#checkbox').change(function() {
  if ($(this).is(':checked')) {
    $(this).attr('checked', 'checked');
  } else {
    $(this).removeAttr('checked');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <input type="checkbox" id="checkbox" />
  <button> Test </button>
</div>

答案 1 :(得分:1)

当您手动选中复选框时,checked HTML属性不会更改。

您可以通过选中每个选中的复选框并使用jQuery :checked选择器手动更新它们来自行更改:

$('#container input[type="checkbox"]:checked').attr('checked','true');

$("button").on("click", function() {
  $('#container input[type="checkbox"]:checked').attr('checked','true');
  console.log($("#container").html());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <input type="checkbox" id="checkbox" />
  <button> Test </button>
</div>