JQuery 1.2.6 кеширование - PullRequest
0 голосов
/ 05 августа 2009

Я делаю довольно много манипуляций с DOM в своем приложении, добавляю новые узлы, и я обнаружил, что функция children () может выйти из синхронизации. У меня есть элемент tbody с двумя строками, я использую функцию children (), чтобы сделать некоторые манипуляции с этими строками. Затем я добавляю еще две строки в tbody, и когда я снова использую функцию children для выполнения дополнительных манипуляций, я получаю только исходные две строки, а не эти плюс две строки, которые я только что добавил. Я делаю новый вызов детям каждый раз, не полагаясь на какие-либо переменные для автоматического обновления. Есть ли способ очистить кеш jQuery - я несколько раз замечал подобные проблемы с селекторами и обошел его, выбрав дальше вверх по дереву DOM, затем переместившись вниз (т.е. не выбирайте tbody с помощью селектора jQuery CSS, выберите таблицу, затем выполните table.tBodies [0] .rows), но в этом случае это не сработает.

Спасибо, Фил

1 Ответ

0 голосов
/ 05 августа 2009

Функция children () не синхронизируется. Вы должны выполнить это снова, если вы изменили DOM. При изменении вы можете иметь обратный вызов, который переделывает ваш массив совпадающих элементов. Это не механизм кэширования, это как работает JavaScript: линейный. Ajax-вызовы иногда кэшируются, но здесь это не так.

Рекомендация Всегда используйте последнюю версию jQuery: 1.3.2 сейчас.

Обновление . Так вот ваш код:

function removeGroup() { 
    var groupNodes = [ $('#row1')[0], $('#row2') ];  // is this correct? 
    var parent = groupNodes[0].parentNode; 
    if ( $(parent).children().length > 2) { 
        parent.removeChild(groupNodes[0]); // why not use dirrectly $('#row1')[0].remove();?
        parent.removeChild(groupNodes[1]); // same here
    } else { 
        alert("Can't delete last group"); 
    } 
} 

Этот код не имеет ничего общего с кэшированием, и большая его часть даже не проходит через jQuery. Лучше объясни, что ты хочешь сделать и сделаешь.

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