我试图选择页面中的所有<script type="text/html">
标记。我使用<script>
标签来存储HTML模板,类似于how John Resig does it。出于某种原因,下面的jQuery选择似乎并没有被任何选择:jQuery选择器脚本标记问题
$("script[type*=html]").each(function() {
alert("Found script "+this.id);
});
这个标记是在HTML文档的BODY:
<body>
<script id="filter-search" type="text/html">
<dt>Search</dt>
<dd><input type="text"/></dd>
</script>
</body>
我也试图把它变成HTML文档的HEAD,但仍未找到。没有警报显示。
如果我不是更改我的代码这样:
$("script[type*=javascript]").each(function() {
alert("Found script "+this.id);
});
然后,它在具有src
到外部文件的HEAD发现只有脚本。没有找到实际页面中的脚本。例如,在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>
我得到以下警报:
- 找到脚本的jQuery
- 找到脚本UI
中的custom
和filter-test
脚本HEAD未被选中,body
标签中的filter-search
脚本也不被选中。
这是预期的行为?为什么这不起作用?我可以解决它,但令人讨厌的是它不起作用。
编辑:事实证明,这实际上使用上面的例子工作正常。在我的情况下,jQuery代码是在一个外部的Javascript模块,它绝对不能工作。当我将代码移动到页面本身的脚本标记中时,它就起作用了。我仍然没有弄清楚为什么它不能在外部文件中工作,但是如果我在某个时候解决它,将会在这里报告。
如果我在chrome上用jQuery 1.4.2运行你的脚本,所有需要的ID都会提醒 – jAndy 2010-05-07 09:48:13
@tauren我最近有类似的问题。请你可以尝试一个实验:改变文本/ HTML到其他东西(建议文本/模板),看看这是否适用于你的外部脚本... – UpTheCreek 2012-03-21 18:17:17