【问题标题】:Jquery does not appear to work in IE7 onlyJquery 似乎仅在 IE7 中不起作用
【发布时间】:2012-09-26 14:15:45
【问题描述】:

我编写了一个 JQuery,当它检测到具有特定 CSS 类的元素时,它会向按钮添加一个 CSS 属性:(在这种情况下,当页面上显示一个验证 div 时)

  <script>
        $(document).bind('DOMSubtreeModified', function () 
        {
            if ($('.errors').length)
            {
            alert('test');
            }
        });
    </script>

警报显示在每个浏览器(包括 IE8 和 9)中,但不是 IE7 - 这是一个已知问题吗?有谁知道可以使用的替代方法吗?

编辑:我发现 IE7 无法执行 'DOMSubtreeModified'。而且我可以看到有替代方案,但是需要自动调用 javascript 并检测何时发生更改,而不是使用对函数的调用来执行它。有什么建议吗?

另一个编辑:因为它是一个 .NET MVC 网站,我看不到如何向验证绑定添加 javascript 调用。 javascript有没有办法检测整个页面的变化?即可以与上述代码相同的javascript代码?

【问题讨论】:

  • IE7 不支持DOMSubtreeModified 事件。
  • 我的 javascript 需要在屏幕上显示元素时运行,该元素仅在出现验证错误时显示。如何使 javascript 函数自动被调用,即如果 html 有变化?另一个问题的链接似乎需要调用该函数。
  • 检查这个 - w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified - DOMSubtreeModified 事件类型在本规范中定义以供参考和完整性,但本规范不推荐使用此事件类型。

标签: jquery css internet-explorer-7


【解决方案1】:

如果它只在出现验证错误时被调用,那么为什么要使用像 DOMSubtreeModified 这样广泛的事件呢?我会使用这样的自定义事件:

function validate() { 
  var error = false;
  //....
  //your validation code that finds an error
  if(error) {
    $(document).trigger('validationError');
  }
  //.....
}


$(document).on('validationError',function() {
   //your code that does something when an error is found
});

【讨论】:

  • 因为它是一个 .NET MVC 网站,我看不到如何向验证绑定添加 javascript 调用。 javascript有没有办法检测整个页面的变化?即相当于我在问题中发布的代码?
  • 如果您使用的是 DOMSubtreeModified - 那么必须使用 JavaScript 执行验证,因为这是唯一可以在不重新加载页面的情况下修改 DOM - 无论代码在哪里修改 DOM(通过创建/ appending/modifying)
    ...
    - 这就是你触发事件的地方......我不明白.NET MVC与它有什么关系。
猜你喜欢
  • 1970-01-01
  • 2012-03-21
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2021-11-27
相关资源
最近更新 更多