2013-03-27 36 views
2

這裏是我的代碼 -jQuery的附加功能在互聯網不工作Explorer 8的

$("body").append("<div>" + 
         "<ul>" + 
          "<li>" + 
           "<a href='javascript:void(0)' onclick='add()'>Add</a>" + 
          "</li>" + 
          "<li>" + 
           "<a href='javascript:void(0)' onclick='edit()'>Edit</a>" + 
          "</li>" + 
          "<li>" + 
           "<a href='javascript:void(0)' onclick='delete()'>Delete</a>" + 
          "</li>" + 
         "</ul>" + 
        "</div>"); 

在IE8中我得到下面的錯誤 - 你需要頁面後要做到這一點 網頁錯誤詳細信息

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) 
Timestamp: Wed, 27 Mar 2013 07:03:53 UTC 

Message: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917) 
Line: 0 
Char: 0 
Code: 0 
+0

刪除$(),只需添加元素 – Bhadra 2013-03-27 07:08:13

+0

那是在這個問題上錯字的字符串,它糾正。 – Ashwin 2013-03-27 07:12:11

+0

[IE中的HTML解析器問題]的可能重複(http://stackoverflow.com/questions/301484/problem-with-html-parser-in-ie) – 2013-03-27 07:17:42

回答

3

加載完成(因爲IE8需要時間來呈現JavaScript並執行):

$(document).ready(function() 
{ 
    $("body").append("<div>" + 
        "<ul>" + 
         "<li>" + 
          "<a href='javascript:void(0)' onclick='add()'>Add</a>" + 
         "</li>" + 
         "<li>" + 
          "<a href='javascript:void(0)' onclick='edit()'>Edit</a>" + 
         "</li>" + 
         "<li>" + 
          "<a href='javascript:void(0)' onclick='delete()'>Delete</a>" + 
         "</li>" + 
        "</ul>" + 
       "</div>"); 
}); 
+0

我認爲這是解決方案,因爲它說你不能追加到body直到它關閉,所以它可能會在文檔中執行代碼,就像在關閉之前那樣。 OP正在嘗試向仍在呈現的元素添加內容。 – CWSpear 2013-03-27 07:35:01

+0

謝謝@CWSpear !!!希望它適用於OP :) – 2013-03-27 07:48:12

1

我的建議,轉儲代碼,這將是可怕的維護。加append需要原始HTML。嘗試一下我認爲「正確」的做法:

// All your functions organized in an object 
var actions = { 
    add: function() { }, 
    edit: function() { }, 
    delete: function() { } 
}; 

// Generate necessary html 
var items = []; 
for (var a in actions) { 
    items.push('<li data-item="'+ a +'"><a href="#"></a></li>'); 
} 

// Handle events 
var $items = $(items.join('')).click(function(e) { 
    e.preventDefault(); // similar to "javascript:void" 
    actions[$(this).data('item')](); 
}); 

// Append to DOM 
$('body').append($('<div><ul></ul></div>').find('ul').append($items))); 

這將更容易維護,因爲它現在都是動態的。我會建議使用有意義的類以及您的項目,即。 「編輯」,「添加」,「刪除」,所以你可以更容易地在CSS中定位它們。

+0

你是絕對正確的,但我覺得我們需要學會走路,才能......走得更快。我認爲扎爾在這種情況下確實已經找到了問題的根源。我這樣說,你知道,沒有訪問IE8 ... =) – CWSpear 2013-03-27 07:37:19

+1

是的,我猜...這更多的是「如何做得更好」,而不是找到解決實際問題的方法。我要說的是,這不值得解決OP問題,因爲代碼很髒並且會導致更多的骯髒問題。 – elclanrs 2013-03-27 07:39:58

+0

嗯......我喜歡它髒。 – CWSpear 2013-03-27 07:42:23

3

我追加沒有工作,如果要追加的元素是一個輸入。對於其他元素的工作。

<td id="V_DepTOTd"><input type="text" id="V_DepTO" /></td> 

沒有工作

$("#V_DepTO").append("`<input type='hidden' id='elementSelected' />`"); 

JS錯誤:意外的通話方法或屬性存取權限

工作

$("#V_DepTOTd").append("`<input type='hidden' id='elementSelected' />`"); 

測試在IE8和jquery.min.js 1.9.1

相關問題