单击元素时,JQuery 不会更改具有“活动”类的元素
JQuery does not change element with `active` class when element is clicked
我正在使用bootstarp导航栏。由于 bootstrap 在单击 tavs 时不会自动切换active
选项卡,因此我编写了一些 JQuery 来为我执行此操作。我以前做过这件事,我不知道我做错了什么。
我的网页:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link rel="stylesheet" type="text/css" href="public'bootstrap-3.3.2-dist'css'bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="public'bootstrap-3.3.2-dist'css'bootstrap-theme.min.css">
<link rel="stylesheet" type="text/css" href="public'styles'style.css">
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script src="public'bootstrap-3.3.2-dist'js'bootstrap.min.js"></script>
<script src="public'js'script.js"></script>
</head>
<body>
<div class="header">
<h1><em>This is a test</em></h1>
</div>
<ul class="nav nav-tabs">
<li id="tab" class="active"><a href="1.html">Page 1</a></li>
<li id="tab"><a href="1.html" target="content">Page 2</a></li>
<li id="tab"><a href="1.html" target="content">Page 3</a></li>
</ul>
</body>
</html>
我的 JQuery 代码:
$(document).ready(function() {
$('#tab').click(function(event) {
$('.active:first').removeClass('active');
el = event.target;
el.addClass('active');
});
});
每当我单击选项卡时,它都应该获取具有 active
类的第一个元素,删除 active
类,然后将active
类添加到单击的元素中。但它不起作用。当我单击该选项卡时,它除了点击链接外什么也不做。我尝试将伪类:first
的使用更改为使用 Jquery 的.first()
但这不起作用。我以前也这样做过,但现在无法让它工作。我做错了什么?
您正在非 jQuery 对象上使用 .addClass()
方法。
用$()
包裹event.target
--> $(event.target)
$('.tab').on('click', function (event) {
event.preventDefault();
$('.active').removeClass('active');
$(event.target).closest('.tab').addClass('active');
});
一些旁注:
-
id
必须是唯一的,它们不应该重复。请改用类。 - 由于您正在单击锚元素,因此请使用
event.preventDefault()
来防止默认行为。 由于
$(event.target)
是被单击的元素,因此如果单击该元素,它将包含锚元素。由于active
类应位于父元素li
元素上,因此您可以使用$(event.target).closest('.tab')
选择它,如上例所示。或者,由于事件处理程序已附加到.tab
元素,因此也可以只使用$(this)
。$('.tab').on('click', function (event) { event.preventDefault(); $('.active').removeClass('active'); $(this).addClass('active'); });
进行这些更改后,请查看此示例。
相关文章:
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 仅悬停一个元素(活动元素)
- 如何在Slick Carousel中获取活动中的幻灯片元素
- 活动事件上的 HTML 元素
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 如何在Javascript中获取HTML页面的活动元素
- 取消:活动元素样式
- Angular Bootstrap$modal与活动背景元素
- jquery上的手风琴.我无法关闭活动元素
- 是否可以使用chrome扩展名与非活动选项卡中的内容元素进行交互
- 将“活动”类添加到父元素和子元素
- 父元素悬停/活动/聚焦时隐藏元素
- 获取活动元素之后的下一个元素
- 如何获取活动时移动的输入元素的单击事件
- 为活动 li 元素提供不同的背景
- 单击元素时,JQuery 不会更改具有“活动”类的元素
- 无法设置活动菜单元素的样式
- 当内容为空但超链接处于活动状态时删除元素
- 如何设置引导模式对话框与背景元素活动