时间:2011-01-24 23:46:24

标签: javascript ajax jquery-templates script-tag

背景:

我有这个模板,其中包含来自youtube的视频,其中包含swfobject。

问题:

有没有办法包含脚本标签......

<script type="text/javascript">
</script>

在jQuery模板中?

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <script type="text/javascript">
        <!-- Some javascript here -->
    </script>
</script>

显然它没有直接起作用,有没有办法在没有脚本的情况下实现同样的事情?

5 个答案:

答案 0 :(得分:24)

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <script type="text/javascript">
        <!-- Some javascript here -->
    {{html "</sc"+"ript>"}}
</script>

您可以使用{{html“&lt; / sc”+“ript&gt;”}}替换&lt; / script&gt;

答案 1 :(得分:4)

不确定这是否是唯一的方法,但您可以将脚本作为模板的原始HTML插入:

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    {{html innerScript}}
</script>

然后:

var innerScript = '<script type="text/javascript"><!-- Some javascript here --></script>';
$('#filaVideoTemplate').tmpl({innerScript: innerScript});

答案 2 :(得分:0)

Ronny Wang的回答为我的问题提供了一个好的开始。但是,他的解决方案对我不起作用 - jQuery模板正文中的..标签导致我的MVC3 Razor视图页面出现问题。

幸运的是,我偶然发现了一个有效的解决方案(详情@ https://github.com/jquery/jquery-tmpl/issues/94),只需要进行一些细微的改动。这是Ronny的答案,但有一个应该使它与MVC3兼容的修复:

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <scr{{= ""}}ipt type="text/javascript">
        <!-- Some javascript here -->
    </scr{{= ""}}ipt>
</script>

看起来只需打开开始和结束标签。希望这有帮助!

答案 3 :(得分:0)

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
   <!-- Some HTML here -->  
</script>



var data = [{ 'Id': '1', 'Name': 'a' }, { 'Id': '2', 'Name': 'b' }, { 'Id': '3', 'Name': 'c'}];

var renderedHtml = $('<div />').html($('#filaVideoTemplate').tmpl(data)).append(('<script type="text/javascript"><!-- Some javascript here --></endScript>').replace(/endScript/g, 'script')).html();

如果数据是单一的,则代码上方的集合不正确。 else(数据是集合)用于多次绑定的脚本标记(data.length times)。

答案 4 :(得分:0)

不确定你问的是什么,但是: 您可以使用ajax请求并将模板放在(js)文件中。 我的template_script.js像这样使用ajax:

$('the element').load('template_script.js').then( OK , fail );

function OK(){
  do something if request was ok.
}

function fail(){
  do something if request was not ok.
}