【问题标题】:JS inside the template模板内的 JS
【发布时间】:2010-05-26 10:05:34
【问题描述】:

我正在尝试在模板中包含一些 javascript 代码。

我的html页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="jquery-jtemplates.js"></script>
</head>

<body>
    <div id="infos"></div>
    <div id="my_template"></div>

    <script type="text/javascript">
        $(document).ready(function() {
            $('#my_template').setTemplateURL("my_template.html");
            try {
                $('#my_template').processTemplate({'var' : 1});
            }
            catch (e) {
                $('#infos').html('error : '+e);
            }
            $('#my_button').click(function(){
                alert('it works outside');
            });
        });
    </script>

</body>
</html>

和模板

content of the template<br/>
{#if $T.var == 1}

 <script type="text/javascript">
  $(document).ready(function() {

   $('#my_button').click(function(){
    alert('it works inside');
   });

  });
 </script>
 <input type='submit' id='my_button' value='click me' onclick='alert("direct");'/>

{#else}
 not working
{#/if}

infos 应答器内给我一个错误

error : SyntaxError: missing } after 函数体

如果我只是将alert('it works inside'); 放在script 应答器中(删除所有与jquery 相关的代码),则页面加载、“直接”和“它在外部工作”这两条消息会显示,但不会显示“它在内部工作”消息。

它应该像doc page上所说的那样工作

允许在模板中使用 JavaScript 代码

谢谢

【问题讨论】:

  • 从验证您的文档开始,79 个错误! validator.w3.org/check。并切换到更有用的文档类型,除非您嵌入 MathML 等,否则 XHTML1 strict 是无用的。
  • 79 个错误,但如果我只更改文档类型,我会降到 1。验证器不太好 :) 我仍然有一个错误,但我不明白为什么
  • doctype 告诉浏览器如何处理你的文档,就像说“你好,这是一个 excel 文件”然后感觉它是一个 .zip,你会得到不可预知的行为。您需要输入 正确的 doctype。
  • 好的,那么正确的文档类型是什么?我在哪里可以找到有关它的信息?谢谢

标签: javascript jquery jquery-plugins jtemplate


【解决方案1】:

看起来{} 符号被模板预处理器弄乱了。我不熟悉 jtemplate,但这可能是您问题的解决方案:jTemplates escape {$

【讨论】:

    【解决方案2】:

    我已经找到了我认为的解决方案。

    模板只允许我在 &lt;script&gt; 标签内执行非常简单的 JS,但我可以调用在我的主页中定义的函数或使用外部 JS 文件

    content of the template<br/>
    {#if $T.var == 1}
        <script type="text/javascript" src="fct_template.js"></script>
        <input type='submit' id='my_button' value='click me'/>
    {#else}
        not working
    {#/if}
    

    我可以在哪里放我想要的所有代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 2014-10-26
      相关资源
      最近更新 更多