脚本标记的jquery选择器问题

Tau*_*ren 9 jquery

我正在尝试选择<script type="text/html">页面中的所有标签.我使用<script>标签来存储HTML模板,类似于John Resig的工作方式.出于某种原因,以下jquery选择器似乎没有选择任何东西:

$("script[type*=html]").each(function() {
    alert("Found script "+this.id);
});
Run Code Online (Sandbox Code Playgroud)

此标记位于HTML文档的BODY中:

<body>
    <script id="filter-search" type="text/html">
        <dt>Search</dt>
        <dd><input type="text"/></dd>
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我也尝试将它放入HTML文档的HEAD中,但仍然没有找到它.没有显示警报.

如果我改为将代码更改为:

$("script[type*=javascript]").each(function() {
    alert("Found script "+this.id);
});
Run Code Online (Sandbox Code Playgroud)

然后它只找到HEAD中具有src外部文件的脚本.找不到实际页面中的脚本.例如,在HEAD中有以下内容:

<head>
    <script type="text/javascript" src="jquery.js" id="jquery"></script> 
    <script type="text/javascript" src="jquery-ui.js" id="ui"></script> 
    <script type="text/javascript" id="custom">
        $(document).ready( function() {
            $("script[type*=javascript]").each(function() {
                alert("Found script "+this.id);
            });         
            $("script[type*=html]").each(function() {
                alert("Found TEMPLATE script "+this.id);
            });         
        });
    </script> 
    <script id="filter-test" type="text/html">
        <dt>Test</dt>
    </script>
</head>
<body>
    <script id="filter-search" type="text/html">
        <dt>Search</dt>
        <dd><input type="text"/></dd>
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我收到以下提醒:

  • 找到脚本jquery
  • 找到脚本ui

HEAD中的customfilter-test脚本未被选中,标记中的filter-search脚本也未被选中body.

这是预期的行为吗?为什么这不起作用?我可以解决它,但它不起作用很烦人.

编辑:事实证明这实际上使用上面的例子工作正常.在我的情况下,jquery代码在外部Javascript模块中,它肯定无法正常工作.当我将代码移动到页面本身的脚本标记时,它就可以工作了.我仍然没有弄清楚为什么它不能在外部文件中工作,但如果我在某个时候解决它,我会在这里报告.

maj*_*son 2

你使用的是什么浏览器?该脚本在 Chrome、Firefox 和 IE6 中运行良好,并发出警报:

  • 找到jquery脚本
  • 找到脚本用户界面
  • 找到自定义脚本
  • 找到模板脚本过滤器测试
  • 找到模板脚本过滤器搜索