Работает до тех пор, пока вы назначаете обработчик на .ready()
.
Пример: http://jsfiddle.net/6NvN8/
// v------ensures the DOM is ready before running code within
$(function() {
$("a.contrast-button").click(function() {
$("a.contrast-button").toggle();
});
});
Если порядок вашего кода точнокак вы показываете в вопросе, тогда элементы еще не существуют, когда выполняется код jQuery.
Если вы просто переверните его, это также заставит его работать.
Пример: http://jsfiddle.net/6NvN8/1
<div class="span-16 last" id="access-controls">
<a class="contrast-button" id="switchDark" href="#"><img src="/static/images/contrast-dark.png" /></a>
<a class="contrast-button" id="switchRed" style="display:none;" href="#" ><img src="/static/images/contrast-light.png" /></a>
<a class="access-nav" href="#">contrast:</a>
</div>
<!-- toggle for contrast buttons -->
<script type=text/javascript>
$("a.contrast-button").click(function () {
$("a.contrast-button").toggle();
});
</script>
Это связано с тем, что элементы могут загрузить до запуска вашего сценария.