jQuery包含html-将类添加到头中
jQuery include html - adding class to header
我使用jQuery在我的主索引页面(以及其他页面)中包含一个页眉。我想根据用户当前所在的页面,使用CSS突出显示导航栏(位于header.html
中)的不同项目。假设用户在主页上,则CSS会在header.html
中导航栏的主页项目中添加一个类。我遇到的问题是该类没有被添加,可能是因为我试图将一个类添加到另一个(jQuery加载的)文件中的元素中
index.html
看起来像这样:
<html>
<head>
<script>
$(function(){
$("#header").load("header.html");
});
</script>
</head>
<body>
<div id="header"></div>
<script>
$('.homeNav > a').addClass("navSelected");
</script>
</body>
</html>
以上是该网站的主页面,我使用jQuery将header.html
加载到正文中的div中。然后在我的body脚本标记中,我将类navSelected
添加到头元素中
header.html
看起来像这样:
<header>
<h1>title</h1>
</header>
<nav>
<span class="homeNav"><a href="/">Home</a></span>
<span class="contactNav"><a href="/contact">Contact</a></span>
</nav>
因此,当用户点击此页面时,我想将navSelected
类添加到header.html
中homeNav
类的跨度中,但该类没有被添加,我不确定修复方法是什么。
如果我使用jQuery从header.html
中添加类,那么该类会被添加得很好,但这违背了只突出显示与用户当前在上的页面相关的导航项目的目的
load()
只是$.ajax
的快捷方式,而且是异步的。
您必须等待内容加载,然后才能对其进行操作,您可以通过使用回调来做到这一点
$(function(){
$("#header").load("header.html", function() {
$('.homeNav > a').addClass("navSelected");
});
});
$('.homeNav > a')
可能找不到DOM元素,因为这一行是在加载(创建)内容之前执行的。所以像@KartikeyaSharma建议的那样使用load
的回调。
有一点变化是AJAX回调不起作用,因为创建DOM元素需要时间,所以在header.html:末尾调用这个函数更安全
onNavReady = function (){$('.homeNav > a').addClass("navSelected");}
在您的header.html中,在末尾调用此函数
...
<span class="contactNav"><a href="/contact">Contact</a></span>
<script>onNavReady()></script>
相关文章:
- jQuery包含html-将类添加到头中
- 正在尝试将标题标记添加到mailto链接,正文中包含URL
- jQuery完整日历添加事件,仅包含月份和日期
- 如何为JS模块添加包含路径
- 在添加或删除之前,正在使用检查classList是否包含类
- 如果Div包含精确文本,则添加类
- 如何在Jquery中的.ech()中包含动态添加的输入值
- 如果类只包含一个特定数字,则向元素添加类
- 使用 WYIHTML5 添加包含 gem 的新字段nested_form
- 添加未包含在loginWith<中的外部登录服务;服务>
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 打印包含1页以上的表数据时,如何在浏览器打印中添加分页符
- 添加包含JavaScript而非URL的书签
- 找到包含单词的特定链接并添加到数组中
- 在 PHP 中包含标头时,您如何添加内容
- 如何使用jquery添加包含AngularJS表达式的ajax加载内容
- 我如何在容器中添加包含表单数据的对话框
- 在类名中添加包含特定文本的类
- 如何使用ng-repeat添加包含计时器功能的项目
- 在之后使用 jQuery 添加包含 ng-if 的元素