JQuery 淡入淡出循环太慢

发布于 2024-12-28 01:16:42 字数 467 浏览 2 评论 0原文

我有 7 个按钮(一开始都是完全不透明的),当鼠标进入一个按钮时,我希望除了悬停的按钮之外的所有按钮都淡入到 0.4。唯一的问题是,fadeTo 效果(在我编码的以下循环中)似乎是按顺序工作的,因此我留下了缓慢的淡入淡出效果,根本没有非常灵敏。

    $('.button').mouseenter(function (event) {
        $('#' + $(event.target).attr('id')).fadeTo(200, 1);
        $('.button').each(function (i, obj) {
            if ($(this).attr('id') != $(event.target).attr('id'))
                $(this).fadeTo(200, 0.4);
        });
    });

我有什么想法可以通过另一种方式实现这一点吗?

I have 7 buttons (all of full opacity to begin with), when the mouse enters one button I want all buttons apart from the button that's being hovered over to fade to 0.4. Only problem is is that it appears that the fadeTo effect (in the following loop I've coded) is working sequentially, so I'm left with a sluggish fade effect, not very responsive at all.

    $('.button').mouseenter(function (event) {
        $('#' + $(event.target).attr('id')).fadeTo(200, 1);
        $('.button').each(function (i, obj) {
            if ($(this).attr('id') != $(event.target).attr('id'))
                $(this).fadeTo(200, 0.4);
        });
    });

Any ideas how I can achieve this another way??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

怀念你的温柔 2025-01-04 01:16:42

这是一种更简单的方法:

$('.button').mouseenter(function (event) {
    $(this).stop(true, true).fadeTo(200, 1);
    $('.button').not(this).stop(true, true).fadeTo(200, 0.4);        
});

JSFiddle 示例

当您没有悬停时淡入所有按钮然后用 id buttonContainer 包围 div 中的任何按钮,该按钮没有填充,并且此代码应该可以工作:

$('#buttonContainer').mouseleave(function(e) {
    $('.button').stop(true, true).fadeTo(200, 1);
});

带有 mouseleave 的 JSFiddle 示例

This is a much simpler way of doing it:

$('.button').mouseenter(function (event) {
    $(this).stop(true, true).fadeTo(200, 1);
    $('.button').not(this).stop(true, true).fadeTo(200, 0.4);        
});

JSFiddle Example

To fade in all the buttons when you arent hovering over any of then surround the buttons in a div with the id buttonContainer which has no padding and this code should work:

$('#buttonContainer').mouseleave(function(e) {
    $('.button').stop(true, true).fadeTo(200, 1);
});

JSFiddle Example with mouseleave

我要还你自由 2025-01-04 01:16:42
var $button = $('button');
$button.mouseenter(function (event) {
    $button.not($(this)).fadeTo(200, 0.4);
});

请参阅示例小提琴: http://jsfiddle.net/3ZtAC/

var $button = $('button');
$button.mouseenter(function (event) {
    $button.not($(this)).fadeTo(200, 0.4);
});

See example fiddle : http://jsfiddle.net/3ZtAC/

烟若柳尘 2025-01-04 01:16:42

我认为你可以使用 :not 选择器在没有循环的情况下做到这一点
希望这样会更快。

$('.button').mouseenter(function (event) {
    $('#' + $(event.target).attr('id')).fadeTo(200, 1);
    $('.button:not(#'+$(event.target).attr('id')+')').fadeTo(200, 0.4);
  });
});

I think you can do this without a loop using the :not selector
Hopefully it will be faster this way.

$('.button').mouseenter(function (event) {
    $('#' + $(event.target).attr('id')).fadeTo(200, 1);
    $('.button:not(#'+$(event.target).attr('id')+')').fadeTo(200, 0.4);
  });
});
够钟 2025-01-04 01:16:42

HTML

<p class="button" id="btn1">button 1</p>
<p class="button" id="btn2">button 2</p>
<p class="button" id="btn3">button 3</p>
<p class="button" id="btn4">button 4</p>
<p class="button" id="btn5">button 5</p>
<p class="button" id="btn6">button 6</p>

CSS

p {
  background: red;
  margin: 5px;
}

脚本

$('.button').mouseenter(function (event) {
  // mark that this is not inactive anymore
  $(this).stop(true, true).removeClass('inactive').fadeTo(100, 1);
  // any inactive elements and current element will not be affected, improve performance
  $('.button:not(.inactive)').not(this).stop(true, true).addClass('inactive').fadeTo(100, 0.4);
});

示例 http://jsfiddle.net/euKkS/

HTML

<p class="button" id="btn1">button 1</p>
<p class="button" id="btn2">button 2</p>
<p class="button" id="btn3">button 3</p>
<p class="button" id="btn4">button 4</p>
<p class="button" id="btn5">button 5</p>
<p class="button" id="btn6">button 6</p>

CSS

p {
  background: red;
  margin: 5px;
}

SCRIPT

$('.button').mouseenter(function (event) {
  // mark that this is not inactive anymore
  $(this).stop(true, true).removeClass('inactive').fadeTo(100, 1);
  // any inactive elements and current element will not be affected, improve performance
  $('.button:not(.inactive)').not(this).stop(true, true).addClass('inactive').fadeTo(100, 0.4);
});

SAMPLE http://jsfiddle.net/euKkS/

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