类“open”被添加到ul
元素中,而不是dropdown#register
元素中。
<ul class="nav"></ul>
<script> $("#register_dropdown").addClass("open"); </script>
<script> $("ul").addClass("open"); </script>
<span class="dropdown" id="register_dropdown"></span>
$("#register_dropdown")
当您执行该行时,返回一个空的 jQuery 对象,因为register_dropdown
DOM 中不存在该对象。
我没有使用 HAML 的经验,但是将脚本包装在DOM 就绪处理程序中是可行的方法:
%script $(function(){ $("#register_dropdown").addClass("open"); });
在普通标记中,它应该呈现为:
<script> $(function(){ $("#register_dropdown").addClass("open"); }); </script>
如果您愿意,也可以使用更详细的方式(与上述结果相同):
$(document).ready(function() {
//DOM is ready, put your code here
$("#register_dropdown").addClass("open");
});
这会阻止您的代码在 DOM 完全加载之前运行。您也可以在元素添加到 DOM 后移动该行,但最好在 DOM 准备好后对其进行操作。