繁体   English   中英

jQuery html()函数和

[英]jQuery html() function and  

我有一个包含Unicode编码不间断空格的字符串。 我需要将此字符串保存到隐藏的HTML元素中,以便另一个函数可以读取此值。

看起来html()函数对字符串进行了一些转换。 例:

  var testString = "string with \xa0 non breaking space";
  $(".export-file-buffer").html(testString);
  var receivedString = $(".export-file-buffer").html();
  console.log(testString);
  console.log(receivedString);

我在控制台中看到的是:

string with   non breaking space
string with   non breaking space

为什么会这样呢? 您能指出我描述此行为的文档吗?

如果只需要在元素上存储对它的引用,则可以使用data()方法,而不是使其显示。

 var testString = "string with \\xa0 non breaking space"; var $target = $('#target'); $target.data('rawData', testString); console.log($target.data('rawData')); var fromData = $target.data('rawData'); console.log( fromData.split('').map(function(character){ if (character < ' ' || character > '~' ) { return '\\\\x'+ character.charCodeAt(0).toString(16); } else { return character; } }).join('') ); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="target"></div> 

如您所见,该值不会转换为&nbsp; 这样做的原因是,当jQuery使用data()在Element上设置一个值时,它不会直接将其放在该元素上。 而是将值存储在内部缓存中,并将该值与元素相关联。 由于该值仅位于javascript内存中,因此浏览器不会对其进行转换。

该值仍在控制台中打印出来,而不是\\xa0因为该十六进制字符代码引用在ASCII图表上不是可见的字符代码。 我包括了一个小脚本,该脚本对空格和波浪号之后的ASCII图表上的字符进行编码。

保留可在html页面上共享的字符串的方法有多种。

  1. 使用输入type =“ hidden”。 在这里,您可以简单地通过$(“。export-file-buffer”)。val(testString)保留值,就像对html所做的那样
  2. (不建议使用)使用全局变量/保持打开状态。 window.export-file-buffer = testString并在以后检索window.export-file-buffer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM