jQuery:在隐藏元素之前,我应该检查可见性吗?

4

在隐藏元素之前检查其是否可见是最佳实践,还是直接隐藏它就可以了?这两种方法各有什么好处?

在下面的示例中,第一种方法在隐藏.foo元素之前检查其是否可见...

$('.dropdown').hover(function(){
    $(this).find('.menu').fadeToggle();
    if($('.foo').is(':visible')){
        $('.foo').fadeOut();
    };
});

或者

$('.dropdown').hover(function(){
    $(this).find('.menu').fadeToggle();
    $('.foo').fadeOut();
});

1
为什么要进行检查?jQuery的主要优点是使您的代码更简洁和易读,不要无缘无故地使其混乱。 - Denys Séguret
2
跳过 iffadeOut 已经为您检查了。 - Karl-André Gagnon
一些jQuery的过渡方法会检查当前状态,但并非所有方法都会这样做,因此这取决于您使用的过渡效果。 - iCollect.it Ltd
切换按钮应该为您执行此操作。如果它被隐藏,它将显示出来;如果它是可见的,它将被隐藏。 - Mark
1个回答

4

这是来自jQuery的.fadeOut()规范的一条注释:

注意:为避免不必要的DOM操作,.fadeOut()不会隐藏已经被认为是隐藏的元素。

所以,放心吧... 隐藏一个已经隐藏的元素并没有什么问题。jQuery会为您检查它。


谢谢,我看了源代码,没有特别看到这个检查。我想我应该阅读文档。 - superUntitled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接