-2

我有一个关于在 C# 字符串中嵌入 javascript/jQuery 的问题。请参阅此代码中事件中的hideQuestion函数。onclick我将此作为字符串添加到 C# 中(为清楚起见,请忽略添加的换行符):

content += "$('#_question101')
   .append(\"
      <div class='ui-grid-c'>
         <div class='ui-block-a'>
            <a id='_bEdit1' href='#Question_01_01'
               onclick='aQ101(); hideQuestion('Question1', 'Question2');'
               data-role='button'>
               Aanpassen
            </a>
         </div>
      </div>\"
   );";

因为我已经使用过"'所以我不能在我的函数中使用它们。有谁知道我怎样才能让这个工作?该功能不起作用,因为我已经使用了两者。

4

5 回答 5

2

您在附加的内容中没有任何双引号,因此您不必担心,只需停止像这样转义它们:

$('#_question101').append("<div class='ui-grid-c'><div class='ui-block-a'><a id='_bEdit1' href='#Question_01_01' onclick='aQ101(); \"hideQuestion('Question1', 'Question2'\")' data-role='button'>Aanpassen</a></div></div>");
于 2013-01-03T10:15:26.413 回答
1

像这样使用

$('#_question101').append("<div class='ui-grid-c'><div class='ui-block-a'><a id='_bEdit1' href='#Question_01_01' onclick='aQ101();hideQuestion(\"Question1\", \"Question2\");'  data-role='button'>Aanpassen</a></div></div>");
于 2013-01-03T10:16:48.277 回答
1

干得好

$('#_question101').append("<div class='ui-grid-c'><div class='ui-block-a'><a id='_bEdit1' href='#Question_01_01' onclick='aQ101(); hideQuestion(\'Question1\', \'Question2\')' data-role='button'>Aanpassen</a></div></div>"); 
于 2013-01-03T10:16:56.187 回答
1

一些注意事项:

  1. JavaScript 实际上支持三种不同的引号:'"`. 当您必须有多个级别的转义时,您可以使用这些来获得良好的效果。

  2. JavaScript 允许您使用 . 转义引号\。由于您的 JavaScript 实际上是一个 C# 字符串,它\.

  3. 随着所有这些转义和引用切换的进行,很难找出问题所在。如你所知,在尝试了一些引用选择和引用转义调整之后,你发出了有效的 HTML,但你的程序中有一个错误!

鉴于这些,我建议您做一些事情:

  1. 每次尝试新事物时,请直接查看网页中的原始 HTML 源代码。在您验证它之前,甚至不要费心点击您的按钮。继续尝试将`其用作您的报价级别之一,但在再次发回此处之前请检查结果。

  2. 退后一步,重新思考你是如何做到这一点的。您是否意识到维护嵌入在嵌入在 C# 字符串中的 JavaScript 中的 HTML 中的 JavaScript 是多么困难?严重地。尝试通过使用不同的容器、类或文件来分离所有不同的关注点。

    • 您可以首先在一个单独的变量中构建您的 JavaScript 或 HTML 片段,然后在将其捆绑到下一个外层时对该字符串进行转义,反复执行此操作,直到您最终获得 C# 字符串。
    • 您可以将 HTML 或 JavaScript 存储在您在 C# 代码中读取的资源文件中,从而完全解决转义问题。
  3. 尝试将事件 JavaScript 与动态 JavaScript 分开。与其将 Javascript 代码内联onclick="oneMoreLevelOfEscapedJavascriptHere()",不如使用.on('click', fnname()? 这是连接 javascript 事件的行业公认的最佳实践方式。

  4. 最后,为什么不使用为 Web 脚本设计的允许出现未转义 HTML 的文字块的环境/语言呢?然后,您可以避免整个间接级别。如果您已经在使用带有 C# 的 ASP.Net,那么有一种方法可以不必先将 HTML 粘贴到字符串中。

于 2013-01-03T10:58:33.170 回答
0

您可以在其中使用字符转义\

onclick='aQ101(); hideQuestion(\"Question1\", \"Question2\");' 

对于更新:

content += "$('#_question101').append('<div class=\"ui-grid-c\"><div class=\"ui-block-a\"><a id=\"_bEdit1\" href=\"#Question_01_01\" onclick=\"aQ101(); **hideQuestion(\\'Question1\\', \\'Question2\\');**\" data-role=\"button\">Aanpassen</a></div></div>');";

1" 级:2' 级:3\" 级:4 级:\\'

于 2013-01-03T10:19:12.050 回答