2012-09-26 160 views
2

我寫過JQuery,它在檢測具有特定CSS類的元素時爲其添加CSS屬性:(在這種情況下,當在頁面上顯示驗證div時)Jquery似乎不能在IE7中工作

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

警報顯示在每一個瀏覽器(包括IE8和9),而不是IE7 - 這是一個已知的問題?有誰知道可以使用的替代方案嗎?

編輯:我發現IE7無法執行'DOMSubtreeModified'。我可以看到有其他選擇,但JavaScript需要自動調用並檢測何時發生更改,而不是使用對函數的調用執行它。有什麼建議麼?

另一個編輯:因爲它是一個.NET MVC網站,我看不到如何添加一個JavaScript調用驗證綁定。有沒有辦法讓JavaScript檢測整個頁面的變化?即JavaScript代碼可以做與上述代碼相同的代碼?

+2

IE7不支持'DOMSubtreeModified'事件。 – undefined

+2

請參閱http://stackoverflow.com/questions/1218445/is-there-any-ondocumentchange-event – Luca

+0

當屏幕上顯示元素時,只有在出現驗證錯誤時纔會顯示此元素,我的JavaScript需要運行。如何讓javascript函數自動調用,即如果html中有更改?另一個問題的鏈接似乎需要調用該函數。 – Theomax

回答

1

如果只有在出現驗證錯誤時纔會調用它,那麼爲什麼要使用如DOM​​SubtreeModified這樣的廣泛事件?我會使用像這樣的自定義事件:

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 
}); 
+0

因爲它是一個.NET MVC網站,所以我看不到如何將JavaScript調用添加到驗證綁定。有沒有辦法讓JavaScript檢測整個頁面的變化?即相當於我在問題中發佈的代碼? – Theomax

+0

如果您使用DOMSubtreeModified - 那麼驗證必須使用JavaScript執行,因爲這是唯一可以修改DOM而無需重新加載頁面的地方 - 無論代碼是修改DOM的地方(通過創建/附加/修改)

...
- 這就是你觸發事件......我看不出.NET MVC與它有什麼關係。 – Adam