2011-02-08 42 views
0

發佈這麼幾個答案,但是這是我的第一個問題:)的jQuery的.html()函數在IE7破壞代碼中<dl>只有

背景有點...我用的jQuery的easyAccordian插件播放:http://www.madeincima.eu/samples/jquery/easyAccordion/。每張幻燈片(由<dd>'s製成)具有動態內容。在一個特定的幻燈片我想換出當用戶點擊一個按鈕<dd>的全部內容......

的代碼如下(或者你可以參觀jsFiddle):

HTML:

<dl> 
<dt class="click">Slide heading</dt> 
<dd class="specs"></dd> 

<div style="display:none;"> 
    <div id="defaultSpecs"> 
     <div style="width:80%;margin-left:10%;text-align:center;margin-top:60px;"> 
      wrsyik5s7khgjsdghf  
     </div> 
    </div> 
</div> 
</dl> 

JS:

$("dt.click").click(defaultSpecs); 

function defaultSpecs() { 
    //alert($("#defaultSpecs").html()); 
    var defSpec = $("#defaultSpecs").html(); 
    //alert($("#defaultSpecs").html()); 
    $("dd.specs").html(defSpec); 
    //alert($("#defaultSpecs").html()); 
    alert($("body").html()); 
} 

這在Firefox魅力和IE的其他版本,但IE7中使用時,它不...

<dl>內及以下 <dd>

HTML是看似被破壞,然後(顯然)函數失敗稱爲第二(或第三)的時候......

難道我錯過了<dl>的一個重要方面或<dd>標籤?或者jQuery .html()函數有什麼問題嗎?

值得注意的幾件事情:

  • 有多種<dd><dt>小號 原代碼,但是 錯誤仍然沒有複製它們。

  • 我已經包含了警報,使您 可以看到各種 元素.html()返回在某些點......隨意取消其註釋,並補鍋匠:)

任何幫助就這將不勝感激:)

回答

4

我認爲問題是,您的div標籤是在dd標籤之外。它在dl標記中,可能是only contain或者我收集的dtdd。嘗試將div轉換爲dd標籤。

具體而言,在我的鏈接注意:此!

< ELEMENT DL - - (DT | DD)+ - 定義列表 - >

如果你被允許使用其他塊級或內聯標籤,它會是這樣的:

<!ELEMENT DL - O(%的流量;)* - 定義列表 - >

注意流程選擇意味着你能夠在其內塊或內聯級元素。不幸的是,那不是那樣。 :(

至於你爲什麼遇到問題,瀏覽器可能在創建DOM的同時考慮到這一點,並且必須添加新的元素,這會導致JavaScript試圖遵循特定結構的問題,因爲瀏覽器正在創建它自己的結構元素

+0

喜歡的解決方案,但問題是我想替換整個'

`的內容`..如果我把它的動態內容,它會被首次超時功能被稱爲... – 2011-02-08 10:43:23