如何使用jquery动态更改DOM元素CSS类
How to change DOM elements CSS class dynamically using jquery
我在AngularJs中创建了两个模板,分别是home.html
和navTemplate.html
。
home.html
<html>
<head>//necessary files goes here</head>
<body ng-app="myApp">
//include navTemplate using ng-include
<ng-include src="'navTemplate.html'"></ng-include>
</body>
</html>
navTemplate.html
<aside id="left-panel">
<nav>
<ul>
<li id="home">
<a href="home.html"><span>Home</span></a>
</li>
<li id="contact" class="active">
<a href="contact.html"><span>Contact</span></a>
</li>
</ul>
</nav>
</aside>
我的要求是,当页面导航到导航面板中的home.html时,应该将主页更新为当前页面。(add class="active")。要做到这一点,我必须在home.html中添加一个脚本。
Inside home.html
<script>
$(document).ready(function(){
$("#home").addClass("active");});
</script>
问题是,如果使用ng-include
,就不会将CSS类动态添加到DOM元素中。请告诉我如何使用ng-include
动态添加或删除CSS类。
您可以使用ng-class
动态更改类。例如
$scope.isActive = false;
$scope.checkIfActive = function(isActive) {
if (isActive) {
return "active"
}
return "not-active"
}
你可以像<li id="home" ng-class="checkIfActive(isActive)">
一样使用它
这是在navTemplate 的控制器内需要的
每次在导航栏中单击其中一个链接时,它都会直接导航到url,url会再次重新加载javascript,因此无法确定在单击后单击了哪个链接,除非你想做一些复杂的事情,比如获取页面的href。最好的方法是使用angularjs路线,然后在导航栏上的链接上添加一个ng点击。它将调用一个函数,该函数接受点击链接的Id。然后,你可以将该链接设置为活动链接。你会有一个类似的函数:
$scope.activeLink = function(id){
$("#"+id+" a").addClass("active");
};
你的html将看起来像:
<li id="home">
<a href="#home" ng-click="activeLink('home')"><span>Home</span></a>
</li>
<li id="contact" class="active">
<a href="#contact" ng-click="activeLink('contact')"><span>Contact</span</a>
</li>
我建议这样做:
- 用类来装饰你的导航链接,比如"navLink"
-
使用此脚本而不是您的脚本:
<script> $("#left-panel").on("click", function(e) { $("#left-panel ul li").removeClass("active"); $(this).parent().addClass("active"); }, "li a.navLink"); </script>
通过这种方式,您将从点击事件的#left面板元素中的"lia.navLink"选择器中获得所有元素的jQuery监视。即使是后来动态添加的,所以你不再需要文档了。准备好了。
navLink类不是必需的,但最好将选择器限制为某一组链接。
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素