检查页面标题是否包含在链接属性中,并使用jQuery分配活动类
Check page title is contained within link attribute and assign active class using jQuery
>我正在构建一个jQuery函数来更改导航栏链接的颜色。我想在导航栏中识别链接的数据属性,并将其与页面的当前标题进行比较。
然后我想查看当前页面标题是否包含锚标记数据属性,如果是,addClass("active");
结果是否为真。一个关键要求是它不能匹配大小写。
这是我相应的html
和javascript
<ul class="top nav">
<li><a class="first" href="http://www.fishwebsite/" name="link" data-index="Home">Home</a></li>
<li><a href="http://www.fishwebsite/about-us/" name="link" data-index="About us">About us</a></li>
<li><a href="http://www.fishwebsite/our-boats/" name="link" data-index="Our boats">Our boats</a></li>
<li><a href="http://www.fishwebsite/product-list/" name="link" data-index="Product list">Product list</a></li>
<li><a href="http://www.fishwebsite/recipes/" name="link" data-index="Recipes">Recipes</a></li>
<li><a href="http://www.fishwebsite/contact/" name="link" data-index="Contact us">Contact us</a></li>
</ul>
而javascript目前是
var current_title = (document).attr("title");
$("a[name=link]").each(function () {
var a = $("a[name=link]").attr("data-index");
//returns true or false...
var exists = current_title.test(a);
if(exists) {
$(a).addClass("active");
}
else {
//false statement..do whatever
}
});
有人可以帮助我吗?我有一个活动链接的CSS样式,它将与通常的导航项目不同,因此给人的印象是它是网站上的"活动"页面。
在每个函数中更改为 $(this),因为您正在选择每个项目。
var current_title = (document).attr("title");
$("a[name=link]").each(function () {
var a = $(this).attr("data-index");
//returns true or false...
var exists = current_title.test(a);
if(exists) {
$(this).addClass("active");
}
else {
//false statement..do whatever
}
});
试试这个,把你的脚本包装在文档中准备好了。 我稍微改变了你的功能。
<script>
$(document).ready(function(){
var current_title = $(document).attr("title");
$("a[name=link]").each(function () {
var a = $(this).attr("data-index");
//returns true or false...
var exists = current_title.indexOf(a)>0;
if(exists) {
$(a).addClass("active");
}
else {
//false statement..do whatever
}
});
});
</script>
由于上面的两个帖子,我现在已经解决了这个问题。这是完整的HTML和JS。
<ul class="top nav">
<li><a class="first" href="http://www.fishwebsite/" name="link" data-index="Home">Home</a></li>
<li><a href="http://www.fishwebsite/about-us/" name="link" data-index="About us">About us</a></li>
<li><a href="http://www.fishwebsite/our-boats/" name="link" data-index="Our boats">Our Boats</a></li>
<li><a href="http://www.fishwebsite/product-list/" name="link" data-index="Product list">Product list</a></li>
<li><a href="http://www.fishwebsite/recipes/" name="link" data-index="Recipes">Recipes</a></li>
<li><a href="http://www.fishwebsite/contact/" name="link" data-index="Contact us">Contact us</a></li>
</ul>
还有Javascript
$(document).ready(function() {
var current_title = $(document).attr("title");
$("a[name=link]").each(function() {
var a = $(this).attr("data-index");
var exists = current_title.indexOf(a)>0;
if(exists) {
$(this).addClass("active")
}
else {
// $(this).removeClass('active');
}
});
});
添加$(this)
而不是(a)
是一个很好的提示,因为它挑出了有问题的链接,而 Nishans 添加了>0
完成了工作代码。
缺点
区分大小写。data-index
值必须与标题的大小写完全匹配,否则将不会分配active
链接。
添加了name
属性和data-index
的较长的锚标记。
优势
在构建网站时,可以非常轻松地匹配一种与jQuery
、title
和data-index
的活动链接的有效方法。没有服务器端,混乱的PHP干预来分配活动链接。
相关文章:
- JQuery中的活动搜索栏
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 获取活动的jQuery UI对话框
- 更改:活动伪类'使用jQuery的样式
- 检测活动<李>用于jQuery转盘(分页)
- 我正在使用php includes来构建一个多页面网站.使用jquery,我将如何添加一个类"活动的”;添加到
- Jquery 手风琴隐藏未活动的滑块
- JQuery UI 1.11 将选项卡设置为活动状态
- 在JavaScript / jQuery中用活动超链接替换粘贴的链接
- 如何在使用 jquery 切换时更改活动切换锚点的样式
- 如何使用jQuery将所有活动按钮的值放入一个数组中
- 如何在没有JQuery的情况下,通过对服务器的基本ajax调用,根据浏览器上的用户活动保持服务器会话活动
- jQuery UI选项卡基于活动选项卡显示/隐藏图像
- 如果X与Y的href=匹配,则添加class'活动'-jQuery
- jquery上的手风琴.我无法关闭活动元素
- 使用jquery更改活动选项卡
- jquery活动菜单在点击链接后丢失
- jQuery:活动状态:将 AddClass 添加到包含 document.href 作为 href 的链接
- Jquery活动页面链接