[英]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>
如您所见,该值不会转换为
。 这样做的原因是,当jQuery使用data()
在Element上设置一个值时,它不会直接将其放在该元素上。 而是将值存储在内部缓存中,并将该值与元素相关联。 由于该值仅位于javascript内存中,因此浏览器不会对其进行转换。
该值仍在控制台中打印出来,而不是\\xa0
因为该十六进制字符代码引用在ASCII图表上不是可见的字符代码。 我包括了一个小脚本,该脚本对空格和波浪号之后的ASCII图表上的字符进行编码。
保留可在html页面上共享的字符串的方法有多种。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.