2013-04-04 64 views
1

我有一個網頁(見http://goo.gl/Bfnm6),其底部出現兩個圓圈。對於非IE瀏覽器(如果版本大於8,也是IE),這些圓圈由CSS生成。對於IE8及更低版本,圓圈呈現爲.PNG文件,因爲這些瀏覽器無法使用CSS生成圓圈。IE8及以下條件格式

我的問題是,雖然我的條件格式正確服務於.PNG文件,當發現IE8或更低版本時,應該被調用去除包含CSS生成的圓的div的div不會刪除div。結果是,您會在下面的屏幕截圖中看到工件。工件是div中包含的文本,其中包含CCS聲明。任何人都可以告訴我我做錯了什麼?

我試過以下,但在所有情況下,文物依然存在:

  1. 使用jQuery呼籲div的.empty()如下面的
  2. 代碼塊div的內部HTML設置看「」 通過使用普通的JavaScript調用document.getElementById("advisers-css-image").innerHTML=""document.getElementById("industry-css-image").innerHTML=""
  3. 呼叫document.getElementById("advisers-css-image").style.visibility="hidden"document.getElementById("industry-css-image").style.visibility="hidden"

截圖 enter image description here

HTML

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>  
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script> 

<!--[if lt IE 9]> 
<div class="advisers display-inline-block"> 
<a href="#" id="advisers-png-image"> 
    <img src="images/advisers220x220.png?format=300w" alt=""> 
</a> 
</div> 

<div class="display-inline-block"> 
<a href="#" id="industry-png-image"> 
    <img src="images/industry220X220.png?format=300w" alt=""> 
</a> 
</div> 

<script type="text/javascript"> 
$("#advisers-css-image").empty(); 
$("#industry-css-image").empty(); 
$("#advisers-circle-text").empty(); 
$("#industry-circle-text").empty(); 
</script> 
<![endif]--> 

<a href="#" id="advisers-css-image"> 
    <div id="advisers-circle-text "class="circle display-inline-block hovershadow advisers advisers-box-shadow text">Professional 
    advisers</div> 
</a> 

<a href="#" id="industry-css-image"> 
    <div id="industry-circle-text"class="circle display-inline-block hovershadow industry industry-box-shadow">Industry</div> 
</a> 
+0

刪除( );'? – 2013-04-04 20:10:17

回答

1

由於@Scott指出,問題是,HTML呈現在你的腳本執行。您可以將腳本移動到HTML上方,或者在DOM準備就緒的情況下執行它。

這應該做的伎倆:如果你使用jQuery,爲什麼不只是做類似`$( '#顧問CSS的形象,#行業CSS-圖像')

<script> 
    $(function(){ 
    $('#advisers-css-image, #industry-css-image').remove(); 
    }); 
</script> 
+0

謝謝Zach,一個非常整潔的解決方案。我是一個服務器端的人,不得不用UI來貶低和骯髒 - 尊重你們所有人! – 2013-04-04 20:30:57

3

這是因爲鏈接需要在條件格式上面的腳本。在腳本執行時,鏈接還沒有被渲染。

所以移動起來是這樣的:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>  
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script> 

<a href="#" id="advisers-css-image"> 
    <div id="advisers-circle-text "class="circle display-inline-block hovershadow advisers advisers-box-shadow text">Professional 
    advisers</div> 
</a> 

<a href="#" id="industry-css-image"> 
    <div id="industry-circle-text"class="circle display-inline-block hovershadow industry industry-box-shadow">Industry</div> 
</a> 

<!--[if lt IE 9]> 
<div class="advisers display-inline-block"> 
<a href="#" id="advisers-png-image"> 
    <img src="images/advisers220x220.png?format=300w" alt=""> 
</a> 
</div> 

<div class="display-inline-block"> 
<a href="#" id="industry-png-image"> 
    <img src="images/industry220X220.png?format=300w" alt=""> 
</a> 
</div> 

<script type="text/javascript"> 
$("#advisers-css-image").empty(); 
$("#industry-css-image").empty(); 
$("#advisers-circle-text").empty(); 
$("#industry-circle-text").empty(); 
</script> 
<![endif]--> 

或者像@Zach L的評論說,你可以在一個.ready()功能包裝條件格式腳本。這樣做,你就不需要改變你的標記:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $("#advisers-css-image").empty(); 
     $("#industry-css-image").empty(); 
     $("#advisers-circle-text").empty(); 
     $("#industry-circle-text").empty(); 
    }); 
</script> 
+0

或者他可以將JS包裝在'$(document.ready(function(){...});' – 2013-04-04 20:12:50

+0

這也是真的 – 2013-04-04 20:13:11

+0

謝謝Scott - 我接受了Zach的答案,因爲(據我所知,不是完全清楚)他的答案張貼了一些早,但我也贊成你的,因爲它的工作原理 - 感謝你的時間! – 2013-04-04 20:32:37