jQuery append не работает в internet explorer


У меня есть функция jquery, которая возвращает данные JSON : Эта функция работает в Google Chrome, но не в Internet Explorer (v11).

$(document).ready(function () {

    $.ajax({
        url: "/../Projects/1/_vti_bin/ListData.svc/Prosjectlist?$select=ID,Tittel,Project_typeValue,Project_heading&$filter=(Project_typeValue%20eq%20%27Type1%27)", 
        method: "GET",
        dataType: "JSON",
        headers: { "accept": "application/json; odata=verbose" },
        success: function (data) {
            $('#projectRow').empty();

            $.each(data.d.results, function (index, item) {
                var itemExist = false;
                $.each($('.projectRow').find('h1'), function (index1, item1) {
                    if (item1.innerHTML == item.Project_heading) {
                        itemExist = true;
                        $(item1).parent().append("<h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3>");

                    }
                });
                if (itemExist == false)
                    $('.projectRow').append("<div class='projectHeadingDiv left'><li><h1>" + item.Project_heading + "</h1><h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3></div></li></div>");

            });           
        },
        error: function (error) {
            alert(JSON.stringify(error));
        }
    });

Я использую jQuery 1.5.2 (Sharepoint 2010 становится нечетким, если я использую что-то более новое). Я смотрел на отладчик в IE11, и данные там, он просто не будет добавлять к моему div. Кажется, что append может быть виновником, потому что если я заменю .append() на .html(), я смогу увидеть последний пункт в $each-loop. Например:

$(item1).parent().html("<h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3>");

Кто-нибудь знает, почему .добавлять работает в Chrome, а не IE? Консоль не выдает никаких сообщений об ошибках, а следовательно, и никаких подсказок. Однако если бы я изменил "режим документа" в IE dev tools с 8 (по умолчанию) на 9 или выше, он, кажется, работает так, как должен.

Любая помощь очень ценится.

1 2

1 ответ:

У вас есть два несопоставимых закрывающих тега </div></li>. Исправьте HTML и он должен работать:

<div class='projectHeadingDiv left'><li><h1>" + item.Project_heading + "</h1><h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3></div>

Chrome и Firefox более снисходительны к такой беспечности разработчиков. Но IE более чувствителен к такого рода ошибкам (которые я на самом деле считаю хорошими).