当前位置: 首页 > 面试题库 >

使用jQuery检测元素是否可见

寿意远
2023-03-14
问题内容

使用.fadeIn().fadeOut(),我一直在页面上隐藏/显示一个元素,但是有两个按钮,一个用于隐藏,一个用于显示。我现在想要 一个按钮来同时切换 两者

我的HTML / JavaScript是这样的:

<a onclick="showTestElement()">Show</a>
<a onclick="hideTestElement()">Hide</a>



function showTestElement() {
  $('#testElement').fadeIn('fast');
}

function hideTestElement() {
  $('#testElement').fadeOut('fast');
}

我想要的HTML / JavaScript:

<a onclick="toggleTestElement()">Show/Hide</a>



function toggleTestElement() {
  if (document.getElementById('testElement').***IS_VISIBLE***) {
    $('#testElement').fadeOut('fast');
  } else {
    $('#testElement').fadeIn('fast');
  }
}

如何检测元素是否可见?


问题答案:

您正在寻找:

.is(':visible')

尽管您可能考虑到仍在其他地方使用它,但应该将选择器更改为使用jQuery:

if($('#testElement').is(':visible')) {
    // Code
}

重要的是要注意,如果目标元素的父元素中的任何一个被隐藏,则.is(':visible')子元素将返回false(这很有意义)。

jQuery 3

:visible一直以选择器速度较慢而著称,因为它必须遍历检查一堆元素的DOM树。但是,对于jQuery3来说有个好消息,

多亏了Google的Paul
Irish的一些侦探工作,我们发现某些情况下,当在同一文档中多次使用自定义选择器如:visible时,我们可以跳过很多额外的工作。现在,该特定案例的速度提高了17倍!

请记住,即使有了这一改进,像:visible和:hidden这样的选择器也会很昂贵,因为它们取决于浏览器来确定元素是否真正显示在页面上。在最坏的情况下,可能需要完全重新计算CSS样式和页面布局!尽管在大多数情况下我们不鼓励使用它们,但建议您测试页面以确定这些选择器是否引起性能问题。

进一步扩展到您的特定用例,有一个内置的jQuery函数称为$.fadeToggle()

function toggleTestElement() {
    $('#testElement').fadeToggle('fast');
}


 类似资料:
  • 问题内容: 检查div类“ media”是否在浏览器的可视视口内的函数,而不管窗口的滚动位置如何。 试图通过此功能使用此插件,但我不知道如何使它工作。 问题答案: 好吧,您如何尝试使其工作?根据该插件的文档,返回一个布尔值,指示该元素是否可见。因此,您可以像这样使用它:

  • 问题内容: 随着selenium2.0a2我有麻烦检查如果一个元素是可见的。 返回,不幸的是没有提供方法。我可以使用或两者都抛出一个来解决这个问题,但这感觉很脏。 还有更好的主意吗? 问题答案: 应该管用。

  • 问题内容: 我想根据元素的属性来验证元素是否可见,但是我没有找到一种有效的方法来使用新的Xcode 7 UI测试材料。 我已经尝试过,但是它们似乎没有按我预期的那样工作。我想他们将与该物业合作。隐藏的元素不应该存在并且不能被击中……但这不是当前的行为(我可以理解行为……但是隐藏的元素不应被IMO击中)。 还有另一种方法来验证“隐藏”属性值吗? 问题答案: 从Xcode 7.1 Beta 3开始,U

  • 问题内容: 我试图仅使用jQuery在HTML元素为空的情况下调用函数。 像这样: 问题答案: 编辑: 正如某些人指出的那样,浏览器对空元素的解释可能会有所不同。如果您想忽略不可见的元素(例如空格和换行符)并使实现更加一致,则可以创建一个函数(或仅使用其中的代码)。 您也可以将其放入jQuery插件,但是您知道了。

  • 问题内容: 函数可以工作并检测表单元素的更改,但是有没有一种方法可以检测DOM元素的内容何时更改? 这是行不通的,除非是表单元素 我希望在执行类似操作时触发此操作: 另外或函数没有回调。 有什么建议么? 问题答案: 我没有在jQuery中使用突变事件API,但是粗略的搜索使我进入了GitHub上的该项目。我不知道该项目的成熟度。

  • 问题内容: 我正在尝试使用量角器测试元素是否可见。元素的外观如下: 在chrome控制台中时,我可以使用此jQuery选择器测试该元素是否可见: 但是,当我尝试在量角器中执行相同操作时,在运行时出现此错误: 为什么这无效?如何使用量角器检查可见性? 问题答案: 应该这样做: 记住量角器的不是jQuery和不_尚_的一部分提供CSS选择器+伪选择