Редактировать: обновление в связи с предоставлением дополнительной информации о test2.htm (страница загружается)
Оригинальный ответ (для исторических целей): я на самом деле не вижу никаких утечек в предоставленном вами коде / разметке - возможно, утечка находится в Test2.htm (который вы не предоставили код / разметка для)?
Новый ответ:
Я бы предположил, что это возможно из-за нескольких загрузок jQuery или других сценариев, которые есть в test2.htm.
Если предположить, что jQuery не протекает путем простого создания экземпляра, а затем обнуления jQuery
и $
, то при многократной загрузке в памяти останется не менее 2 копий jQuery. При загрузке jQuery сохраняет резервную копию всех предыдущих версий $
и jQuery
в _$
и _jQuery
- поэтому вы будете загружать как минимум 2 копии jQuery при многократном использовании load ().
Вышеупомянутое предположение, скорее всего, не верно, однако - есть все шансы, что у jQuery есть утечки, даже если вы «разгрузите» его, установив $
, jQuery
, _$
и _jQuery
to null
- на самом деле он не предназначен для такой многократной загрузки (однако я уверен, что они позволяют это намеренно, поэтому вы можете использовать noConflict()
для загрузки и использования двух разных версий jQuery, если это необходимо).
Вы можете добавить «селектор» к загрузочному URL. Например:
$("#Test1").load("Test2.htm body", null, function() {
//callback does nothing
});
//or
$("#Test1").load("Test2.htm div#the_Div_I_Want", null, function() {
//callback does nothing
});
Я бы предложил сделать это, если вас не интересуют какие-либо сценарии в результате ajax или, если вы do хотите использовать сценарии, вам нужно выбрать селектор, чтобы отключить только определенные элементы / сценарии. например,
/* load with selector "all elements except scripts whose
src attribute ends in 'jquery.js'" */
$("#Test1").load("Test2.htm :not(script[src$='jquery.js'])", null, function() {
//callback does nothing
});
Также следует отметить, что если вы пропустите аргумент «data» (он у вас будет null
) и предоставите функцию в качестве второго аргумента, jQuery правильно определит, что второй аргумент является обратным вызовом, поэтому
$("#Test1").load("Test2.htm :not(script[src$='jquery.js'])", function() {
//callback does nothing
});
приемлемо