使用 jQuery 悬停

发布于 2024-08-12 04:46:09 字数 905 浏览 5 评论 0原文

调试我的 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");
    });
});

这作为我的标题在 h3h3.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜`诱少女 2024-08-19 04:46:09

使用toggleClass代替:

$(document).ready(function()
{
    $("div.bar").mouseover(function(){
            $(this).toggleClass("hover");
        }).mouseout(function(){
            $(this).toggleClass("hover");
    });
});

如果不存在,它将添加类,如果已经应用,它将删除。

更正: div.bar.hover 不是 IE6 的有效 CSS 选择器。相反,执行类似的操作:#myPanel div.hover

use toggleClass instead:

$(document).ready(function()
{
    $("div.bar").mouseover(function(){
            $(this).toggleClass("hover");
        }).mouseout(function(){
            $(this).toggleClass("hover");
    });
});

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.

老子叫无熙 2024-08-19 04:46:09

甚至更短:

$('div.bar').on('mouseenter mouseleave', function () {
    $(this).toggleClass('hover');
});​

Even shorter:

$('div.bar').on('mouseenter mouseleave', function () {
    $(this).toggleClass('hover');
});​
往事随风而去 2024-08-19 04:46:09

确实,IE6 无法处理 CSS 中的多个类,例如:

div.one.two{color:red}

不适用于

red

更新:
这也可能是一个冒泡问题,请尝试使用 .hover 帮助器 http://docs.jquery.com /Events/hover 来防止这种情况发生。

True, IE6 cant handle multiple classes in CSS, f.ex:

div.one.two{color:red}

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.

禾厶谷欠 2024-08-19 04:46:09

您提供的示例在 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文