0

类“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>
4

1 回答 1

3

$("#register_dropdown")当您执行该行时,返回一个空的 jQuery 对象,因为register_dropdownDOM 中不存在该对象。

我没有使用 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 准备好后对其进行操作。

参考

于 2012-07-23T01:21:06.757 回答