根据URL更改更改DOM元素类名
Change DOM element class name based on URL change
我有一段代码,它可以拾取URL中的任何哈希更改。
只要有人在中键入散列,它就会工作并注意到
但是,我想更改容器的类名。当我尝试这样做时,它会更改所有的类名,我明白为什么了。
是否可以指定索引,例如
$(".agenda-tabs li").this('class', 'active');
这是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery Example</title>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="https://raw.githubusercontent.com/cowboy/jquery-hashchange/v1.3/jquery.ba-hashchange.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$( "#seminars" ).hide();
$( "#speakers" ).hide();
$(function(){
// Bind the event.
$(window).hashchange( function(){
// Alerts every time the hash changes!
var currenthash = location.hash;
$('.agenda-tabs').find('.ui-link').each(function(){
var innerDivId = $(this).attr('href');
if(innerDivId==currenthash)
{
$(".agenda-tabs li").attr('class', 'active');
}
else
{
$(".agenda-tabs li").attr('class', '');
}
});
})
// Trigger the event (useful on page load).
$(window).hashchange();
});
});
</script>
</head>
<body>
<ul class="agenda-tabs nav nav-tabs">
<li class="first-tab">
<a class="btn btn-default ui-link" data-toggle="tab" href="#t1">
City
<span></span>
</a>
<div id='conference'>
1
</div>
</li>
<li class="active">
<a class="btn btn-default ui-link" data-toggle="tab" href="#t2">
Speakers
<span></span>
</a>
<div id='seminars'>
2
</div>
</li>
<li class="last-tab">
<a class="btn btn-default ui-link" data-toggle="tab" href="#t3">
Stage
<span></span>
</a>
<div id='speakers'>
3
</div>
</li>
</ul>
</body>
</html>
上下文变量(this
)中已经有一个锚<a>
元素。您只需要更改父元素<li>
// get the parent li and set it as active
$(this).closest("li").addClass('active'); // Add
或
// get the parent li and set it as active
$(this).closest("li").removeClass('active'); // remove
是否可以为LI元素提供ID?然后您可以将代码更改为:
$(".agenda-tabs li#" + currenthash).addClass('active');
您可以更改到此的绑定
$(window).hashchange( function(){
var currenthash = location.hash;
$(".agenda-tabs li").removeClass('active')
$('.agenda-tabs').find('.ui-link').each(function(){
var innerDivId = $(this).attr('href');
if(innerDivId==currenthash)
{
$(".agenda-tabs li").addClass('active');
}
});
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 通过AJAX侦听向DOM添加某些元素
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- Selenium无法在浏览器DOM中定位元素
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- 从dom中删除任何元素后,Touchmove事件停止触发
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- 找到元素DOM的根节点(阴影或光)的最佳方法是什么?
- 在querySelector:如何获得第一个和最后一个元素?dom中使用的遍历顺序