1

我只是不明白这一点。如何使用引号来完成这项工作?

$("div a').replaceWith('<a href="#" onclick="'+data['hash']+'")>Link</a>');

例如,我尝试过这个和其他变体:

 $("div a').replaceWith('<a href="#" onclick="'+data[/\'hash/\']+'")>Link</a>');

我远不是正则表达式专家......

编辑:

实际上这条线现在是这样的:

$("div a").replaceWith('<a href="#" onclick="share('+data['hash']+')")>Link</a>');

很抱歉造成混乱。这在我的 HTML 代码中仍然不起作用。就像@TJCrowder 提到的那样,它需要进行 HTML 编码,所以我这样做了,但没有奏效:

$("div a").replaceWith('<a href="#" onclick="share('+data['hash']+')")>Link</a>').html();
4

4 回答 4

2

首先平衡您在初始选择器中使用的引号。

$("div a")
//      ^---- ", not '

然后去掉多余的),你得到:

$("div a").replaceWith('<a href="#" onclick="'+data['hash']+'">Link</a>');
//                     ^                     ^              ^          ^
// These delimit the html string; the " within them are part of the HTML

如果我们将每个段放在自己的行上,这可能会更清楚:

$("div a").replaceWith(
    '<a href="#" onclick="' +
    data['hash'] +
    '">Link</a>'
);

但请注意,您存储的任何值都data['hash']需要进行 HTML 编码(因为它是 HTML 属性的值),并且不需要'在其中包含任何值。你还没有展示那是什么,所以...

于 2013-08-22T23:27:44.653 回答
0

按照 Crowder 的建议更改代码后看起来不错:

$("div a").replaceWith('<a href="#" onclick="share('+data['hash']+')")>Link</a>').html();

他也问了data['hash'] 。这应该是 html 编码的,如果它还没有那么改变它:(我还看到一个额外的 ')' 那里)

$("div a").replaceWith('<a href="#" onclick="share( escape ( '+data['hash']+') ) ")>Link</a>').html();
//By the way is this an extra ')' you have   -------------------------------------^
于 2013-08-23T01:28:50.537 回答
0

将“div a”更改为“div a”:

$('div a').replaceWith('<a href="#" onclick="'+data['hash']+'")>Link</a>');
于 2013-08-22T23:27:51.207 回答
0

尝试这个:

$('div a').replaceWith("<a href='#' onclick='"+data['hash']()+"'>Link</a>");

笔记:

我在内部使用单引号,因为我不必按shift那么多。我假设data['hash']拥有一个未执行的功能。

于 2013-08-22T23:33:21.910 回答