2

これが私のコードです-

$("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 では次のエラーが表示されます - Webpage error details

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
4

3 に答える 3

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>");
});
于 2013-03-27T07:26:58.807 に答える
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 でテスト済み

于 2013-05-30T22:47:55.567 に答える
1

私のアドバイスは、そのコードをダンプすることです。Plusappendは生の 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 でより簡単に対象にすることができます。

于 2013-03-27T07:27:47.960 に答える