IE7 и jQuery .html / .empty / .css не работают - PullRequest
2 голосов
/ 21 марта 2012

У меня есть страница, использующая несколько таблиц, сгенерированных ретранслятором .NET на page_load. Эти таблицы могут иметь один из двух классов: fileExists или fileDoesNotExist. На document.ready у меня есть следующее:

$document.ready(function () {
    $('.fileDoesNotExist').each(function () {
        $(this).html("<h3>FILE #" + $(this).attr('id').replace('T', '') + ":</h3><p><a href=\"/cp/media-upload.aspx?seq=" + $(this).attr('id').replace('T', '') + "\">click here to upload an MP3 or video</a></p>");
        $(this).css('border', 'none');
    });
});

Что должно повлиять на этот бит HTML (задействовано больше элементов, но это основная суть):

<table class="fileDoesNotExist" style="width: 100%;margin-top: 1em;" id="T1">
        <tr>
            <th colspan="3">FILE 1</th>
        </tr>
        <tr>
        <td>Media Title:</td>
            <td colspan="2">
                <input name="txtTitle" type="text" maxlength="255" size="50" id="txtTitle" />
            </td>
        </tr>
</table>

Этот код прекрасно работает в Chrome, Firefox, IE8 и IE9. При попытке просмотра страницы в IE7 он ничего не делает. Я могу воспроизвести его в IE9, используя стандарты IE7 для режима документа, и при попытке запустить скрипт непосредственно в консоли он ничего не делает и не возвращает полезного сообщения об ошибке.

.each определенно корректно запускается (я заменил $(this).html на alert($(this).attr('id'));, и это выплевывает идентификаторы таблиц с классом fileDoesNotExist), но кажется, что замены html / css просто не подходят ' беру.

Есть ли что-то интересное в IE7 (кроме того, вы знаете, что это IE7), что я здесь скучаю? Я просмотрел предложенные вопросы, перечисленные в моей теме, но, похоже, ничего не касалось .html или .css, которые вообще не стреляли.

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

Согласно нашему обсуждению в комментариях, вы не должны начинать ID с цифры.

2 голосов
/ 21 марта 2012

Похоже, что innerHTML нельзя безопасно использовать в IE7 при применении к элементам Table или TBody.Вот несколько ссылок.

InnerHTML в проблемах IE7

jQuery .html () не отображает никаких данных в ie7, но ie8 работает

надеюсь, что это поможет, оба дают обходные пути

Редактировать

Поскольку ваш код заменяет содержимое элемента Table простым HTML (без тегов tr / td), почему бы не поставитьтаблицы в содержащем div и применить классы fileExists / fileDoesNotExist к этому div вместо

JSFiddle с внешним div

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...