1

也许这是意料之中的,但我发现这很奇怪,因为我现在开始使用 jQuery。

所以,我正在使用节点和玉编写一个应用程序。在 index.jade 我有一个形式的声明

  p Welcome subscriber 
      span(id="subscriber") someID

现在,一旦客户端和服务器之间建立连接,服务器就会发送带有一些数据的欢迎 JSON 消息。其中之一是我要在上面替换的客户端的 ID。一旦客户端收到欢迎 JSON 消息,它就会初始化适当的结构,然后我调用函数 loadStats:

function loadStats() {
  var myText = "" + myData.id + ".";
  $('#subscriber').text(myText);
  $('#subscriber').html(myText);
};

在屏幕中,我可以看到文本“someID”已替换为客户端的 ID。但是,当我实际检查正在查看的页面的 html 代码时,我看到了以下形式的声明:

<p>Welcome subscriber <span id="subscriber">someID</span></p>

换句话说,在实际的 HTML 代码中,文本“someID”没有被替换。这是预期的吗?更换是如何完成的?此外,似乎使用任何一个语句

  $('#subscriber').text(myText);
  $('#subscriber').html(myText);

在屏幕上提供复制,但不在屏幕上显示的实际 html 内容上。这是正确的行为吗?根据我的理解(和期望), .text() 用特定的 id 替换元素的可视数据, .html() 替换内容。我错过了什么吗?

提前致谢。jQuery 菜鸟在这里。

4

1 回答 1

1

pug 中表达式的两条规则:

  1. 在属性中,您使用引号来输出文字文本,而当您想使用变量时,您可以省略引号,并且
  2. 对于标签的内容,当您希望 pug 评估表达式时使用等号,或者如果您想要文字文本则不要放置任何内容

因此,考虑到这些规则,查看您的代码,您会将属性“subscriber”作为文字输出,将“someId”作为文字输出。

span(id="subscriber") someID

结果是:

<span id="subscriber">someId</span>

您希望两者都是动态的,因此删除属性中的引号并在元素后放置一个等号:

span(id= subscriber)= someID

这将用变量动态替换两者。

于 2018-10-07T17:52:46.560 回答