css上的Jquery问题
Jquery issue on css
我使用jQuery函数在点击li标签时添加一个类。问题是类被添加了一段时间,然后消失了。也许,因为我正在研究joomla,在我的jquery函数之后还有另一个jquery函数或另一个php脚本可以修改li标记?
这是我的网站,http://debatoversigt.dk/若你们点击左边的菜单,你们可以看到背景色出现一瞬间,然后消失。
这是我的jQuery:
jQuery( document ).ready(function() {
jQuery(".art-block li").click(function(){
jQuery(".selected").removeClass("selected");
jQuery(this).addClass("selected");
});
和css:
.selected{
background-color:red!important;
}
由于页面刷新,CSS被删除。您需要将代码放入页面中,以查看当前页面的URL,并将selected
CSS样式应用于相应的菜单项。这样做仍然可以让它作为菜单项发挥作用,但在页面加载时也可以保持选中状态。
一种需要考虑的方法是将您已经拥有的代码保留在适当的位置,并将其添加到页面中:
jQuery( document ).ready(function() {
var windowloc = window.location.pathname;
jQuery(".art-block li").each(function() {
if(jQuery(this).attr("href")==windowloc) {
jquery(this).addClass("selected");
}
});
});
使用的另一种方法(工作量更大,但也更健壮)是向页面的body
标记添加一个类,使其与菜单项相对应。这实际上是一种更干净的方法,因为您可以突出显示子页面的菜单项,而不仅仅是顶级部分的菜单项。您需要在每个列表项中加入一个唯一的CSS类,以便在页面加载时进行比较。我发现了一个关于向Joomla添加身体类的教程,它可能对这种方法有帮助。
一旦你有了CSS类(在菜单li
项和body类上),你就会使用类似于JavaScript代码的东西来突出显示菜单项:
jQuery( document ).ready(function() {
jQuery( document ).ready(function() {
var bodyclass = jQuery("body").attr("class");
jQuery(".art-block li").each(function() {
if(jQuery(this).hasClass(bodyclass)) {
jQuery(this).addClass("selected");
}
});
});
});
这两种方法中的任何一种都适用于你当前的网站,但选择你认为对你的网站现在和未来最有意义的方法。
如果您想保持页面刷新,但突出显示了正确的菜单项,则需要找到选择正确菜单项的方法。例如,您可以将当前url与每个菜单项的href属性进行比较,如果匹配,则突出显示该项。
另一种选择是使用AJAX来更新页面的内容。从你的评论来看,我认为这不是你想要的,但无论如何,要做到这一点,你需要防止默认的锚点行为并加载内容。这样你就不必担心高亮显示消失,你的代码也会完美工作(但你会遇到其他单页AJAX网站的典型问题,如URL状态、浏览器历史按钮等)
- 神秘的ajax json请求问题jQuery
- 这个代码出了什么问题?(Jquery)
- 图片库问题jquery
- SetInterval 60秒倒计时问题jQuery
- 这行代码出了什么问题?(jQuery.parseJSON)
- onclick属性的引号过多的问题 - jQuery,HTML
- IE8 问题 - jQuery 调整页面大小时导航 html
- nivo滑块和光滑的轮播无法协同工作的问题 - jquery
- Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
- window.位置问题JQuery代码
- 延迟对象使用问题jQuery
- 文件订单加载问题-jquery
- ie7问题:jquery点击编辑不工作
- jquery.mouseenter()问题jquery.mouseleave()和子元素
- Webkit问题:jQuery没有定义
- 拖放问题jquery
- 检索按钮值问题Jquery
- 选择所有复选框问题(jQuery)
- 过滤逻辑问题jQuery
- 逻辑运算符OR问题:jQuery