Ich habe den folgenden Code zum Erstellen von Registerkarten. Es funktioniert am Ende des HTML-Body-Abschnitts, aber nicht, wenn ich es am Anfang platziere - bevor alle divs definiert sind. Warum könnte das sein?Warum funktioniert ein Jquery-Code nur, wenn er am Ende meines html-body-Abschnitts steht?
Antwort
Sie müssen es mit einem Dokument bereit Block wickeln. Dies verhindert, dass der Code ausgelöst wird, bis die Seite vollständig geladen ist.
<script type="text/javascript">
$(function() {
// do something on document ready
$("ul.tabs li.label").hide();
$("#tab-set > div").hide();
$("#tab-set > div").eq(0).show();
$("ul.tabs a").click(
function() {
$("ul.tabs a.selected").removeClass('selected');
$("#tab-set > div").hide();
$(""+$(this).attr("href")).show();
$(this).addClass('selected');
return false;
}
);
$("#toggle-label").click(function() {
$(".tabs li.label").toggle();
return false;
});
});
</script>
Dies ist im Grunde das erste, was Sie lernen, wenn Sie jQuery lernen. – Travis
Es ist höchstwahrscheinlich, weil das DOM noch nicht fertig ist, und deshalb existieren sie nicht.
Daher müssen Sie Folgendes tun:
$(function() {
// Any code in here will only be executed when the DOM is ready.
});
oder lassen Sie Ihren Code am Ende des Dokuments (oder beides). –
@coward: das ist nicht zuverlässig. Es funktioniert nicht die ganze Zeit und in jedem Browser –
jQuery(function($) {
// put your code in here and it will be executed
// when the document has fully loaded.
});
„... vor allem der divs definiert werden“ sollten Sie einen Anhaltspunkt geben - wie können sie Ihr Code möglicherweise manipulieren, wenn sie noch nicht definiert haben? – NickFitz