JavaScript 中的字符串插值

13
在Ruby中,您可以像这样使用字符串插值:
text = "This is visit number #{numVisits} to this website"

这样可以避免显式连接的需要。
我正在使用jQuery,有一个类似于这样的代码:
$(document).ready(function(){
    $("a.ajax").click(function(event){
        $("#content").load("data.html this.getClass");
    });
});

我希望的行为是“点击<a class="ajax" id="schedule"></a>,当前页面的contentdiv将被data.html中的schedulediv替换。如果我手动编写。
load("data.html #test"); 

这个可以运行,但我希望脚本可以加载与所点击锚点ID值相对应的DIV。任何帮助都将不胜感激!

示例页面:http://www.mariahandalex.info/stack/


你想传递什么值给 load 方法? - Gumbo
你要找的短语是变量插值,恐怕Javascript没有这样的功能。http://en.wikipedia.org/wiki/Variable_interpolation#Interpolation - Danny
澄清一下,我有6个链接,每个链接都有一个唯一的ID标签。当我点击给定的链接时,我希望该链接的ID被传递到load函数中: load("data.html #(clickedlinkID); - Alex Mcp
5个回答

17

这已经发生了变化。

从2015年开始,现在有更好的方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

将JS带入了许多像Ruby和PHP这样的语言所已经拥有的特性。

例如,在我的jQuery驱动页面中,我使用:

   $('#myModalLabel').html(`Show GRAPH of : ${fundCode}-${funcCode}`); 

在我更新的Firefox和Chrome浏览器中,安全地呈现如下:

显示图表:AIP001-_sma

请注意,在.html(....)中使用反引号(\`)括起字符串参数。


1
哦,很棒,我还没有看到过。浏览器要求上有一个巨大的红旗,但知道这个还是不错的!谢谢,6年后... :-) - Alex Mcp

6

您不能将JavaScript代码嵌入到字符串中,但是您可以使用“+”将一个字符串连接到一个对象上,像这样

$('#content').load('data.html #' + $(this).getClass());

关于在字符串中嵌入代码,我认为它没有一个特定的名称。Groovy将这些字符串称为“Gstring”,而ruby将其称为“Expression substitution in strings”。我不确定它是否有一个标准名称。

1
我想你的意思是$(this).getClass(),或者可能是this.className。 - strager

5

5

Javascript不像Ruby或PHP那样解析字符串文字以查找替换标记。您需要使用连接符。


2

试试这个:

$(document).ready(function(){
    $("a.ajax").each(function(){
        var obj = $(this);
        obj.click(function(event){
           alert(obj.attr('id'));
        });
    });
});

@Alex Mcp:现在看一下。 - Gumbo
'#' + this.getClass()?你可能是想打 '.'。 - geowa4
但是那会追加“#content” div的类。那里是数据进出的地方。我需要找到一种方法来附加被单击的链接的“ID”属性,因为这将标识从外部页面中提取的内容。 - Alex Mcp
我忘了返回的是 jQuery 对象。现在它有效了。 - Gumbo
我放了一个示例页面。这很奇怪,它只返回链接列表中第一个的ID值。也许列表本身就是对象,而且它认为只有一个ID?我在这方面有点超出我的知识范围...非常感谢。 - Alex Mcp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接