9

当页面/文档发生更改时,我需要执行一些 JQuery - 在这种情况下,当显示具有特定 CSS 类的 div 时。

我有以下 JQuery 代码:

   <script>
           $(document).change(function () {
               if ($('.validation_errors').length) {
                   alert("test");
               }
           }
    </script>

但是,它不会执行并显示警报。我在这里错过了什么吗?

4

3 回答 3

25

更改仅适用于输入、文本区域或选择元素。相反,您需要将函数绑定到DOMSubtreeModified突变事件:

$(document).bind('DOMSubtreeModified', function () {
   if ($('.validation_errors').length) {
       alert("test");
   }
});

编辑:如果您的目标浏览器支持它,您应该使用MutationObserver代替。

于 2012-09-19T13:00:23.487 回答
2

你不能以这种方式监视 DOM 的变化。引用 jQuery 文档:

当元素的值改变时,change 事件被发送到元素。此事件仅限于元素、框和元素。- http://api.jquery.com/change/

如果您希望在 DOM 更改时执行代码,您可能需要设置检查 DOM 的间隔或使用jQuery 论坛上的海报提供的这种技术。

DOMSubtreeModified事件,但在当前的浏览器中几乎不可用,所以我个人不推荐使用它。有关详细信息,请参阅此 stackoverflow 答案

于 2012-09-19T13:04:04.093 回答
0

哥们,你的语法也错了!如果您要这样做,请在准备好的文档中进行,.change 非常有限,不会在新页面上触发。

$(document).ready(function(){
    if($('.classOrId').length){
        //do something if it exists
    };
});
于 2012-09-19T12:59:38.870 回答