Не удается обновить таблицу с помощью jQuery после запроса ajax - PullRequest
0 голосов
/ 30 января 2012

Я получаю таблицу с сервера, используя запрос ajax. После того, как я вставил таблицу в html, я хочу внести некоторые изменения, но она не работает.

Мой код прост:

$.get("someurl", function(data) {
    $("#scenarios").html(data)
}); 
$("#scenarios table tr:first").append("<th>bla</th>"); 
$("#scenarios table tr:gt(0)").append("<td><input type='checkbox'></td>");

Я вижу таблицу, но последние две строки не работают. Если я скопирую эти две строки и вставлю их в консоль Chrome (F12), все будет отлично.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 января 2012

из-за асинхронной природы ajax, написанные вами селекторы выполняются перед добавлением таблицы, переместите эти строки в успешный обратный вызов

$.get("someurl", function(data) {
    $("#scenarios").html(data);
    $("#scenarios table tr:first").append("<th>bla</th>"); 
    $("#scenarios table tr:gt(0)").append("<td><input type='checkbox'></td>");
}); 
2 голосов
/ 30 января 2012

Поскольку get является асинхронным, две строки сразу после него будут выполняться до того, как запрос вернет свой ответ. Вам нужно будет переместить эти строки внутри функции обратного вызова:

$.get("someurl", function(data) {
    $("#scenarios").html(data);
    $("#scenarios table tr:first").append("<th>bla</th>"); 
    $("#scenarios table tr:gt(0)").append("<td><input type='checkbox'></td>");
});

Также обратите внимание, что вам не хватает точки с запятой в первой строке функции обратного вызова. Это не жизненно важно, но рекомендуется использовать точки с запятой везде, где они должны появляться.

...