Sto tentando di selezionare tutti i tag <script type="text/html">
in una pagina. Io uso i tag <script>
per memorizzare modelli HTML, simili a how John Resig does it. Per qualche ragione, il seguente selettore jquery non sembra essere selezionare nulla:problema selettore jquery con tag di script
$("script[type*=html]").each(function() {
alert("Found script "+this.id);
});
Questo markup è nel corpo del documento HTML:
<body>
<script id="filter-search" type="text/html">
<dt>Search</dt>
<dd><input type="text"/></dd>
</script>
</body>
Ho anche provato a mettere in l'HEAD del documento HTML e non è ancora stato trovato. Nessun avviso è mai mostrato.
Se invece cambiare il mio codice a questo:
$("script[type*=javascript]").each(function() {
alert("Found script "+this.id);
});
Poi si trova distante solo gli script nella HEAD che hanno un src
in un file esterno. Gli script nella pagina effettiva non vengono trovati. Per esempio, con il seguente nella testa:
<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>
Ottengo i seguenti avvisi:
- Trovato script di jQuery
- sceneggiatura Trovato UI
I custom
e filter-test
script nella HEAD non è selezionato, né lo script filter-search
nel tag body
.
È questo il comportamento previsto? Perché non funziona? Posso aggirarlo, ma è fastidioso che non funzioni.
MODIFICA: Si scopre che in realtà funziona bene con l'esempio sopra. Nella mia situazione, il codice jquery era in un modulo Javascript esterno e sicuramente non funzionava. Quando ho spostato il codice in un tag di script nella pagina stessa, ha funzionato. Non ho ancora capito perché non funzionerebbe nel file esterno, ma riferirò di nuovo qui se riuscirò a risolverlo a un certo punto.
Se eseguo il tuo script con jQuery 1.4.2 su Chrome, tutti gli ID desiderati sono allertati – jAndy
@tauren Recentemente ho avuto un problema simile. Per favore, potresti provare un esperimento: cambiare testo/html in qualcos'altro (suggerisci testo/modello) e vedere se funziona con lo script esterno ... – UpTheCreek