使用 jQuery 悬停
调试我的 jQuery 代码时遇到一些问题...
为了允许在 IE 中对块元素(例如 div
)实现悬停效果,我想使用 jQuery 而不是 css 来实现这一点。我的 jQuery 代码看起来像这样:
$(document).ready(function()
{
$("div.foo").mouseover(function(){
$("div.foo h3").addClass("hover");
}).mouseout(function(){
$("div.foo h3").removeClass("hover");
});
});
这作为我的标题在 h3
和 h3.hover
之间切换,但是如果我尝试:
$(document).ready(function()
{
$("div.bar").mouseover(function(){
$(this).addClass("hover");
}).mouseout(function(){
$(this).removeClass("hover");
});
});
这不会'不适用于所有版本的 IE。这是否意味着 IE 无法检测 1 个元素(即 div.bar.hover
)上的多个类?提前致谢。
编辑:
检查代码后,我意识到问题在于与也应用于此元素的 javascript curvycorners-2.0.4
(这是另一个 IE hack)的冲突。
Having a bit of problem debugging my jQuery code...
In order to allow hover effects on block elements (such as div
) in IE, I want to use jQuery to do the trick instead of css. My jQuery code looks something like:
$(document).ready(function()
{
$("div.foo").mouseover(function(){
$("div.foo h3").addClass("hover");
}).mouseout(function(){
$("div.foo h3").removeClass("hover");
});
});
This works as my header switch between h3
and h3.hover
, BUT if I try to:
$(document).ready(function()
{
$("div.bar").mouseover(function(){
$(this).addClass("hover");
}).mouseout(function(){
$(this).removeClass("hover");
});
});
This won't work in all versions of IE. Does it mean IE has trouble detecting multiple classes on 1 element (which is div.bar.hover
)? Thanks in advance.
EDIT:
After examined the code, I realised the problem lies in a conflict with javascript curvycorners-2.0.4
(which is another IE hack) that were also applied to this element.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用toggleClass代替:
如果不存在,它将添加类,如果已经应用,它将删除。
更正:
div.bar.hover
不是 IE6 的有效 CSS 选择器。相反,执行类似的操作:#myPanel div.hover
。use toggleClass instead:
It will add class if not there, and remove if already applied.
And correct:
div.bar.hover
is not valid CSS selector for IE6. instead do something like that:#myPanel div.hover
.甚至更短:
Even shorter:
确实,IE6 无法处理 CSS 中的多个类,例如:
不适用于
red
更新:
这也可能是一个冒泡问题,请尝试使用 .hover 帮助器 http://docs.jquery.com /Events/hover 来防止这种情况发生。
True, IE6 cant handle multiple classes in CSS, f.ex:
wont work for
<div class="one two">red</div>
Update:
It might be a bubbling issue as well, try using the .hover helper http://docs.jquery.com/Events/hover to prevent that.
您提供的示例在 IE6 中完美运行(无法检查 IE7/8)。检查这里
http://jsbin.com/uyopi
The sample provided by you works flawless in IE6 (can't check IE7/8). Check here
http://jsbin.com/uyopi