请帮我理解这行代码?

时间:2015-04-20 00:52:18

标签: jquery

我一直在搜索我正在处理的应用程序中的这行代码:

var encodedString = $('<div />').text(variableName).html();

我理解:

  • =符号右侧的所有内容都分配给encodedString。
  • ('<div />')是一个选择器,而<div />部分是一个自动关闭标签。
  • 我知道.text(variableName)在所选文本字段中显示variableName字符串,而.html()返回元素的html内容。

但总而言之,这条线路做了什么? ('<div />')和.html()部分对我来说完全混淆了整行。有人可以给我一些指导,想法或解释吗?

这似乎是一个语法问题所以我认为其余的代码可能是不必要的,但请告诉我,如果不是这样的话。

这是来自我必须编辑的应用程序以满足我的需求,因此我必须先了解现有代码才能更改它。

感谢您提供的任何指示。

3 个答案:

答案 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将具有以下值:

"&lt;div&gt;blah&lt;/div&gt;"

(顺便说一句,很容易被转义为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() ?上了解更多信息