jquery mouseenter 单击以删除不起作用的类
Jquery Mouseenter Click to Remove Class Not Working
我真的希望有人能帮忙。我有一个无序列点列表,它在鼠标输入时以不透明度淡出(css 默认为 0.7),在鼠标离开时再次消失。
单击时,我想添加一个使不透明度保持完整的类。到目前为止,但是从匹配的元素中删除类目前不起作用 - 其他使类保持完全不透明的项目也保持完全不透明。
这是Jquery:
$(document).ready(function () {
$("#nav a").mouseenter(function () {
$(this).fadeTo("slow", 1);
$("#nav a").click(function () {
$(".activeList").removeClass("activeList"); //THIS PART ISN'T WORKING
$(this).addClass("activeList");
});
});
$("#nav a").mouseleave(function () {
if (!$(this).hasClass("activeList")) {
$(this).fadeTo("fast", 0.7);
}
});
});
我认为这是因为由于鼠标输入而我被困在元素中并且只能影响(这个)。已经尝试过.bind/.unbind,已经尝试了自己添加/删除类(它有效)和其他一些事情,但到目前为止没有运气!任何建议将不胜感激。
试试这个:
$(document).ready(function () {
$("#nav a").mouseenter(function () {
$(this).fadeTo("slow", 1);
});
$("#nav a").click(function () {
$(".activeList").removeClass("activeList"); //THIS PART ISN'T WORKING
$(this).addClass("activeList");
});
$("#nav a").mouseleave(function () {
if (!$(this).hasClass("activeList")) {
$(this).fadeTo("fast", 0.7);
}
});
});
尝试以下操作(它几乎是相同的代码,但布局不同,进行了一些调整):
$(document).ready(function () {
$("#nav a").hover(function(e) { //On hover in
$(this).fadeTo("slow",1);
},function(e) { //On hover out
if(!($(this).hasClass("activeList")))
{
$(this).fadeTo("fast",0.7);
}
}).click(function(e) { //On click
$("#nav a").removeClass("activeList");
$(this).addClass("activeList");
});
});
意识到
不透明度直到悬停才消失,可能是因为页面不刷新,不知道。已经编辑了我自己的代码以使其工作,但认为我可能会将我的解决方案应用到您的解决方案中,因为您的解决方案更具语义。这是我得到的:
$(document).ready(function () {
$("#nav a").mouseenter(function () {
if (!$(this).hasClass("activeList")) // Added IF here, only had it on
// mouseleave originally
{
$(this).stop().fadeTo("slow", 1);
}
$("#nav a").click(function () {
$(".activeList").stop().removeClass("activeList");
$(this).stop().stop().addClass("activeList");
$("#nav a").stop().not(".activeList").fadeTo("fast",0.7);
//The class came off, but the opacity didn't fade because no page refresh..?
//Added extra animation eliminating selected with .not to fix
});
});
//THE REST IS SUPERFLUOUS
$("#nav a").mouseleave(function () {
if (!$(this).hasClass("activeList"))
{
$(this).stop().fadeTo("fast", 0.7);
}
});
});
也不得不在我的中添加一些 .stop 部分,因为多次悬停不好。现在将停止发布,也许只是在您的评论上弹出一条评论,说我是否设法将我的答案集成到您更整洁的代码中。
非常感谢大家的发布,我真的很感激!
我发现不透明度是通过添加到元素的 style 属性来添加的,因此删除类无济于事,请尝试像这样清除样式:
$("#nav a").click(function () {
$(".activeList").attr("style", "");
$(".activeList").removeClass("activeList");
$(this).addClass("activeList");
});
相关文章:
- Jquery行删除对我不起作用,如何设置它
- 删除确认对话框在第一次单击时不起作用
- JS动态添加字段-删除按钮不起作用
- 添加/删除类淡入淡出不起作用
- 删除不起作用的父元素和所有子元素
- 节点.js快速删除 req.body 不起作用
- .hasClass 在 onclick 函数中不起作用,但删除和添加类函数可以
- 图层删除(图像);在 Kinetic.js 中不起作用
- 由 JavaScript 控制的 CSS3 单向转换在按顺序添加/删除类时不起作用
- JQuery/骨干删除在茉莉花中不起作用
- JavaScript 确认删除不起作用
- 添加/删除类在 Chrome 中对我不起作用
- 为什么从 Angular 服务中的对象中删除此元素不起作用
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 删除不起作用的li元素
- 使用jquery动态删除表行;不起作用
- 使用javascript从特定网站删除cookie不起作用
- 从购物车中删除在AngularJS中不起作用
- 删除jQuery中的事件不起作用
- jquery+draggable/my的输入在删除后不起作用