函数看不到新添加的类
function not seeing newly added classes
我有一个导航,可以在鼠标悬停时淡入和淡出文本颜色。这是基于非活动类的。
除了最初处于活动状态的页面之外,它可以正常工作。
当我改变页面时(通过ajax),我将"非活动"类添加到以前"活动"的元素,但我的函数没有注意到它。我可以在web检查器中看到活动类被删除,非活动类被正确添加。有什么建议吗?
('header#primary nav a.inactive').hover(
function(){
$(this).stop().animate({'color': '#ffffff'}, 'slow');
},
function() {
$(this).stop().animate({'color': '#a2a2a2'}, 'slow');
});
需要使用jquery的live
函数动态添加元素
$('header#primary nav a.inactive').live('mouseenter' ,function(){
$(this).stop().animate({'color': '#ffffff'}, 'slow');
}).live('mouseleave',
function() {
$(this).stop().animate({'color': '#a2a2a2'}, 'slow');
});
http://api.jquery.com/live/简短的回答:使用。live()或。delegate()函数代替。jQuery文档给出了它们是如何工作的解释,唯一的问题是你需要做一个mouseenter()
和mouseleave()
的组合,而不是快捷的hover()
方法。
中回答:
当你直接基于jQuery选择器分配事件处理程序(无论是悬停,点击,等等)时,就像你的代码:
$('header#primary nav a.inactive').hover( /* your code */ );
那说"找到所有匹配选择器的DOM元素,此时并为它们分配一个事件处理程序(hover)"。它肯定不会注意元素在将来什么时候可能被改变以匹配选择器,也不会从元素中删除处理程序,如果它们被改变到不再匹配。
你应该使用。live()或。delegate(),它们将处理当前或将来匹配选择器的元素的事件。
长回答:哎呀,我没有时间写这个,你真的不需要我解释。live()和。delegate()是如何在jQuery文档中介绍的。
相关文章:
- 为什么我在Internet Explorer上看不到html元素
- ajax请求成功,但可以'我看不到我的数据
- 使用jQuery for RSS看不到多个帖子
- 执行此代码时,我看不到警告框
- Javascript 方法看不到对象变量
- 看不到变量
- Phantomjs 看不到 Twitter/Facebook 授权页面
- AS3 XML上的翻页在IE和FIREFOX上看不到
- JavaScript 看不到声明的变量
- 看不到函数外的Javascript变量
- Javascript对象看不到内部函数
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- 从Node.js查询Neo4j时看不到任何回调
- I'我在css中做了一些隐藏的东西,我可以'I don’我现在点击按钮时看不到它
- 我看不到Javascript数组中的图像
- 硒 IDE 1.8.1 警报框:运行测试时看不到警报框
- 在网格PhongMaterial地面和聚光灯上看不到任何带有Colada模型的阴影
- 我正在通过 javascript 向表添加行,但是当我提交页面时,C# 看不到添加的行
- 函数看不到数组中的更改
- 函数看不到新添加的类