Как обновить значение ячейки таблицы с помощью jQuery - PullRequest
4 голосов
/ 30 марта 2011

У меня проблема с обновлением значения ячейки таблицы с использованием jQuery 1.4.2. все это работает в Firefox и Safari, но IE8 и IE9 просто ничего не делают. Нет предупреждений, ошибок или чего-либо еще, что дало бы мне подсказку, где его искать.

Таблица выглядит следующим образом:

<table id="test">
    <tr id="1">
        <td id="name">sample name</td>
        <td id="schedule">sample value</td>
        <td id="day">sample value</td>
    </tr>
    <tr id="2">
        <td id="name">sample name</td>
        <td id="schedule">sample value</td>
        <td id="day">sample value</td>
    </tr>
    <tr id="3">
        <td id="name">sample name</td>
        <td id="schedule">sample value</td>
        <td id="day">sample value</td>
    </tr>
</table>

Я выполняю вызов ajax и получаю данные json:

{"Test": [
         {"id":"1", "name":"John", "day":"Monday"}, 
         {"id":"2", "name":"Marry", "day":"Thursday"} 
]}

после получения данных существует цикл, который выполняет итерацию по набору данных json и обновляет соответствующий столбец полученными данными следующим образом:

$.each(json.Tests, function(){
    /* update test with details */

    var test = this.hash;

    /*set values for each test */
    $("table#test tr[id=" + test + "]").find("#name").html(this.name);
    $("table#test tr[id=" + test + "]").find("#schedule").html(this.status);
    $("table#test tr[id=" + test + "]").find("#day").html(this.changed);
});

Как я уже говорил, это было протестировано в Safari, и Firefox все работает нормально, но IE8 и IE9, похоже, ничего не делают.

Ответы [ 3 ]

7 голосов
/ 30 марта 2011

Я думаю, что атрибут id должен быть зарезервирован для уникальных идентификаторов, по моему мнению. Как насчет изменения атрибута id элементов td на атрибут класса или даже атрибут имени. Я подозреваю, что IE запутался.

Кроме того, если вы сохраняете идентификаторы идентификаторов и меняете атрибут id класса на класс, вы можете изменить свой код на что-то вроде:

$("#" + test + " td.name").html(this.name);

И поскольку число может представлять практически все, что также префикс этих идентификаторов с каким-то префиксом идентификатора, было бы хорошо. Что-то вроде:

$("#thing-" + test + " td.name").html(this.name);

И HTML будет выглядеть так:

<table id="test">
    <tr id="thing-1">
        <td class="name">sample name</td>
        <td class="schedule">sample value</td>
        <td class="day">sample value</td>
    </tr>
    <tr id="thing-2">
        <td class="name">sample name</td>
        <td class="schedule">sample value</td>
        <td class="day">sample value</td>
    </tr>
    <tr id="thing-3">
        <td class="name">sample name</td>
        <td class="schedule">sample value</td>
        <td class="day">sample value</td>
    </tr>
</table>

Надеюсь, это поможет!

0 голосов
/ 30 марта 2011

У вас есть URL для проверки вашего скрипта?

0 голосов
/ 30 марта 2011

Идентификаторы не должны начинаться с цифры. Возможно, IE9 не так прост, как другие браузеры.

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