我試圖選擇頁面中的所有<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