2012-09-27 105 views
2

我有以下代碼:淘汰賽虛擬元素瀏覽器

... 
</tr> 
<!-- ko if: eLocBound() == 'true' --> 
<tr> 
    <td>Select Locations <span class="required_star">*</span></td> 
    <td><input type="text" /></td> 
</tr> 
<!-- /ko --> 
<tr> 
... 

這正確地顯示在Chrome/Firefox/Safari。然而,當我加載頁面在IE 9,出現以下錯誤:

Cannot find closing comment tag to match: ko if: eLocBound() == 'true'

當我檢查在IE的開發窗口的HTML輸出,我發現IE瀏覽器實際上是嵌套<!-- ko if -->註釋標記之前的TR標籤而不是TR標籤之間,因此Knockout無法找到匹配的<!-- /ko -->標籤。我已鏈接到這裏的問題的截圖:http://imgur.com/nN7Ln

相反,如果我的代碼改成這樣:

<tr data-bind="visible: eLocBound() == 'true'"> 
    <td>Select Locations <span class="required_star">*</span></td> 
    <td><input type="text" /></td> 
</tr> 

然後一切工作正常。我只想知道是否有人用虛擬元素遇到過這個問題。

回答

4

這是Knockout無法真正彌補的Internet Explorer問題。在你的情況下,一個很好的解決方法是在你的行周圍使用tbody標籤。一個表格可以包含多個tbody標籤。所以,你的代碼看起來像:

... 
</tr> 
<tbody data-bind="if: eLocBound() == 'true'"> 
<tr> 
    <td>Select Locations <span class="required_star">*</span></td> 
    <td><input type="text" /></td> 
</tr> 
</tbody> 
<tr> 
... 
+0

我認爲是這樣......謝謝你確認這種情況,我必須注意到IE瀏覽器。實際上,我使用了虛擬元素,因爲TR標籤已經包裝在一個TBODY標籤中,並且附加了單獨的可見性邏輯。將來只會用於未來的情況。 –