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

元素可见时的jQuery

柴晔
2023-03-14
问题内容

基本上,我想知道是否有一种方法可以在元素变为隐藏或可见时自动运行功能,而不是在用户单击时而是在另一个脚本中自动运行。

我不希望它只运行一次,因为元素(例如滑块)不断地从可见变为隐藏。

这是jQuery可以使用bind进行的事情吗?例如将元素的可见性绑定到函数(我不知道该怎么写)

如果您需要我详细说明我要做什么,请告诉我。谢谢

伪代码:

$('#element').bind('display:none', function);
function(){
    //do something when element is display:none
}

$('#element').bind('display:block', function2);
function2(){
    //do opposite of function
}

问题答案:

~~JQuery中没有事件可检测CSS更改。

可能是:

DOM L2事件模块定义了突变事件;其中之一-DOMAttrModified是您需要的。当然,它们并未得到广泛实施,但
至少在Gecko和Opera 浏览器中 受支持

来源:使用Jquery更改css属性时的事件检测

如果没有事件,则可以使用setInterval函数,如下所示:

var maxTime = 5000, // 5 seconds
    startTime = Date.now();

var interval = setInterval(function () {
        if ($('#element').is(':visible')) {
            // visible, do something
            clearInterval(interval);
        } else {
            // still hidden
            if (Date.now() - startTime > maxTime) {
                // hidden even after 'maxTime'. stop checking.
                clearInterval(interval);
            }
        }
    },
    100 // 0.1 second (wait time between checks)
);

请注意,使用setInterval这种方式进行监视可能会影响页面的性能

2018年7月7日:
由于此答案最近获得了一些知名度和投票,因此这里是检测CSS更改的其他更新:

突变事件现已被性能更友好的突变观察者所取代。

MutationObserver接口提供了监视对DOM树所做的更改的功能。它旨在替代DOM3事件规范中较旧的Mutation Events功能。



 类似资料:
  • 下面是我的代码。当我从excel中输入url时,大部分时间都显示org . open QA . selenium . elementnotvisibleexception:元素当前不可见错误。对于像www.travelocity.com这样的网站,它显示点击7 8链接后,但www.google.com显示错误从开始。 线程"main"org.openqa.selenium.ElementNotVi

  • CSS 中的 visibility 属性用来设置元素是否可见,您可以将该属性与 JavaScript 一起使用,来创建非常复杂的菜单或网页布局,比如在网页中做一些测试题时您可以使用 visibility 属性将题目的答案或解析隐藏起来,需要时再将其展示出来。 visibility 属性的可选值如下: 值 描述 visible 默认值,表示元素是可见的 hidden 隐藏元素 collapse 主要

  • 当用触发时,事件错误表示元素不可见

  • 所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于 然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的 > 添加在底部。 是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。 我想可以做的是,预先计算所有带有@id和“width”的元

  • 我试图点击的div的HTML是: 我想使用。单击类名为'class=“btn btn-green''的按钮上的()。 我已经使用以下代码来选择元素(在遵循其他类似SO问题的解决方案后)。 谢谢

  • 我试图使用给定的url登录沙箱贝宝应用程序,但它抛出元素不可见异常错误时,试图找到电子邮件id和密码字段在页面使用下面的代码。