2016-06-08 2 views
0

я получить таблицу со следующим сценарием:Javascript/JQuery использовать старый объект DOM в обратном вызове

$("#table").load("index #table", function(tableNew) { // code }); 

Перед тем, как сделать это, я хотел бы сохранить старую таблицу в переменной. При получении новой таблицы я хочу сравнить ее со старой таблицей.

var tableCurrent = document.getElementById('table'); 
console.log(tableCurrent); // object 

$("#table").load("index #table", function(tableNew) { 
    var htmlNew = $.parseHTML(tableNew); 
    var rowsNew = htmlNew[0].getElementsByTagName('tr'); 

    console.log(tableCurrent); // null 

    // compare new with old 

    // insert new table in DOM 
}); 

Как я могу «получить доступ» к старой таблице внутри обратного вызова нагрузки? Я знаю, что старая таблица будет удалена правильно.

+0

перед тем '.load' хранить его в переменной. – vaso123

+0

'tableCurrent' должен быть доступен в обратном вызове. Поскольку вы используете jquery, храните его как объект jquery и позволяйте кешу jquery обрабатывать его. – Brian

+0

@lolka_bolka Это то, что он сделал с 'tableCurrent' –

ответ

1

EDIT: Сохранить как объект JQuery, чтобы избежать попадания в старую ссылку как новый объект JQuery не является ссылкой на старой таблицы DOM элемента

var tableCurrent = document.getElementById('table'); 
console.log(tableCurrent); // object 
var $tableCurrent = $('#table'); 

$("#table").load("index #table", function(tableNew) { 
    var htmlNew = $.parseHTML(tableNew); 
    var rowsNew = htmlNew[0].getElementsByTagName('tr'); 

    console.log($tableCurrent); // this should be the jquery table object 
    console.log($tableCurrent[0]); // actual table element 

    // compare new with old 

    // insert new table in DOM 
}); 
+0

Спасибо за ответ. – xDs