我一直在搜索我正在处理的应用程序中的这行代码:
var encodedString = $('<div />').text(variableName).html();
我理解:
('<div />')
是一个选择器,而<div />
部分是一个自动关闭标签。 但总而言之,这条线路做了什么? ('<div />')
和.html()部分对我来说完全混淆了整行。有人可以给我一些指导,想法或解释吗?
这似乎是一个语法问题所以我认为其余的代码可能是不必要的,但请告诉我,如果不是这样的话。
这是来自我必须编辑的应用程序以满足我的需求,因此我必须先了解现有代码才能更改它。
感谢您提供的任何指示。
答案 0 :(得分:2)
这里没有什么特别之处:http://jsfiddle.net/nt5q2sfb/
var encodedString = $('<div />').text('bobs').html();
$('<div />')
只创建一个div
text('bobs')
使用文本'bobs'填充div,或者在您的情况下填充var的内容
.html()
返回创建div的内部html以开始。
因此结果基本上是传递给text()
答案 1 :(得分:2)
这具有转义(消毒)存储在变量中的任何html的效果。例如,如果分配了variableName
"<div>blah</div>"
(但是...想象一下,这是一个阴险而有用的东西,比如脚本标签),encodedString将具有以下值:
"<div>blah</div>"
(顺便说一句,不很容易被转义为html,以便在堆栈溢出中显示。提示:不要尝试内联。)
答案 2 :(得分:0)
.text(variableName)
会将元素的内容设置为variableName
,.html()
将返回相同的内容。
也许这会帮助你更好地理解:
variableName = 'anything';
$('<div />').text(variableName);
var encodedString = $('<div />').html();
这是一回事。
细节是encodedString
只是文字,而不是HTML。 .text()
和.html()
之间存在差异,您可以在What is the difference between jQuery: text() and html() ?上了解更多信息