jquery "" error

本文关键字:quot error jquery | 更新日期: 2023-09-27 17:50:35

我有一个关于c#字符串中嵌入javascript/jQuery的问题。请参阅本代码中onclick事件中的hideQuestion函数。我将其添加到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>'"
   );";

因为我已经使用了"',所以我不能在我的函数中使用它们。有人知道我怎么才能让它工作吗?

jquery "" error

没有任何双引号,所以你不需要担心,只要停止转义,像这样:

$('#_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>");

像这样使用

$('#_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>");

给你

$('#_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. JavaScript实际上支持三种不同的引号:'"`

  2. JavaScript允许您使用'转义引号。因为你的JavaScript实际上是一个c#字符串,其中'转义引号,那么你必须转义反斜杠本身,这样c#就会发出一个实际的反斜杠,在JavaScript中被视为转义字符。

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

鉴于这些,我建议你做几件事:

  1. 每次尝试新东西时,直接查看网页中的原始HTML源。在验证之前,不要点击按钮。继续尝试使用`作为你的报价级别之一,但在你再次发布之前检查结果。

  2. 退后一步,真正重新思考你是怎么做的。你是否意识到在c#字符串中嵌入HTML中嵌入JavaScript是多么困难?认真对待。尝试通过使用不同的容器、类或文件来分离所有不同的关注点。

    • 你可以首先在一个单独的变量中构建你的JavaScript或HTML片段,然后,当你把它捆绑到下一个外层时,转义该字符串,重复这样做,直到你最终得到c#字符串。
    • 你可以将HTML或JavaScript存储在一个资源文件中,你可以在你的c#代码中读取它,完全处理转义问题。
  3. 尝试将事件JavaScript与动态JavaScript分开。而不是把Javascript代码内联onclick="oneMoreLevelOfEscapedJavascriptHere()"为什么不使用.on('click', fnname() ?

  4. 最后,为什么不使用为web脚本设计的环境/语言,允许未转义的HTML文本块存在?这样你就可以避免整个间接层面。如果你已经在使用ASP。Net和c#,那么就有一种方法不必先将HTML粘贴到字符串中。

您可以使用'

进行字符转义
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:"二级:'三级:'"四级:'''