jquery 'remove'를 사용하여 DOM에서 요소를 삭제합니다. 문제는 메모리에서 삭제되지 않는다는 것입니다. 나는 'purge'와 'deleteData'를 DOM과 메모리에서 삭제하려고 시도하지만, 여전히 운이 없다.DOM에서 DOM 요소를 제거하고 메모리에서 제거하는 방법?
아래의 디버깅 스크립트는 문제를 강조 표시합니다. 메모리 삭제를 확인하기 위해 이전/이후 합계를 콘솔에 게시합니다.
[x]를 클릭하면 행이 삭제되지만 데이터를 저장하려고해도 메모리에 남아 있습니다. 주석
는 이러한 솔루션을
// discardElement(current_row) ;
// jQuery.removeData(current_row) ;
// $.removeData(current_row) ;
// current_row.removeData();
//purge(current_row) ;
// $.purge(current_row) ;
// $.removeData(current_row) ;
없음 행운 중 하나 ... 내가 무엇을 시도했다 몇 가지되지 않습니다 : How to clear DOM elements created with jQuery from memory?
Removing SVG from dom and memory
나는이에서 봤는데 몇 시간 남았습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
HTML 코드 :
<div data-role="page">
<!-- /header -->
<div data-role="content">
<!-- entry points table -->
<section id="entry_points_section">
<div class="section_titles">Enter market entry points:</div>
<div class="input_fields_wrap">
<table class="responsive" id="input_entries_table">
<tbody>
<tr>
<th scope="col" id="entry_price_column">Entry price</th>
<th scope="col">Percent</th>
<th scope="col">Order amount</th>
<th scope="col">Capital value</th>
<th scope="col">Breakeven</th>
<th scope="col"></th>
</tr>
<tr>
<td width="17%" style="min-width:3em"><input type="number" class="entryprice_class"
name="entryprice" size="5"
min="0" placeholder="0" value="500"></td>
<td style="min-width:2em"><input type="range" name="slider-fill_1" class="entry_percent"
id="entry_percent_1" value="0" placeholder="0%" min="0"
max="100"
data-highlight="true"/></td>
<td width="17%" style="min-width:3em"><input type="text" class="order_amount"
name="order_amount_name" size="5" min="0"
placeholder="0" length="10px" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="capital_value"
name="capital_value" size="5" min="0"
placeholder="0" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="breakeven" name="breakeven"
size="5" min="0" placeholder="0" disabled></td>
<td width="28px" style="display:none">
<button data-role="button" data-icon="delete" data-iconpos="notext" data-inline="true">
</button>
</td>
</tr>
<tr>
<td width="17%" style="min-width:3em"><input type="number" class="entryprice_class"
size="5"
min="0" placeholder="400" value="400"></td>
<td style="min-width:2em"><input type="range" name="slider-fill" class="entry_percent"
value="0" placeholder="0%" min="0"
max="100"
data-highlight="true"/></td>
<td width="17%" style="min-width:3em"><input type="text" class="order_amount"
name="order_amount" size="5" min="0"
placeholder="0" length="10px" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="capital_value"
name="capital_value" size="5" min="0"
placeholder="0" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="breakeven" name="breakeven"
size="5" min="0" placeholder="0" disabled></td>
<td width="28px"><a href="#" class="remove_field">
<button data-role="button" data-icon="delete" data-iconpos="notext" data-inline="true">
</button>
</a></td>
</tr>
<tr>
<td width="17%" style="min-width:3em"><input type="number" class="entryprice_class"
size="5"
min="0" placeholder="0" value="300"></td>
<td style="min-width:2em"><input type="range" name="slider-fill" class="entry_percent"
value="0" placeholder="0%" min="0"
max="100"
data-highlight="true"/></td>
<td width="17%" style="min-width:3em"><input type="text" class="order_amount"
name="order_amount" size="5" min="0"
placeholder="0" length="10px" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="capital_value"
name="capital_value" size="5" min="0"
placeholder="0" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="breakeven" name="breakeven"
size="5" min="0" placeholder="0" disabled></td>
<td width="28px"><a href="#" class="remove_field">
<button data-role="button" data-icon="delete" data-iconpos="notext" data-inline="true">
</button>
</a></td>
</tr>
<tr>
<td width="17%" style="min-width:3em"><input type="number" class="entryprice_class"
name="entryprice" size="5"
min="0" placeholder="0" value="200"></td>
<td style="min-width:2em"><input type="range" name="slider-fill" class="entry_percent"
value="0" placeholder="0%" min="0"
max="100"
data-highlight="true"/></td>
<td width="17%" style="min-width:3em"><input type="text" class="order_amount"
name="order_amount" size="5" min="0"
placeholder="0" length="10px" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="capital_value"
name="capital_value" size="5" min="0"
placeholder="0" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="breakeven" name="breakeven"
size="5" min="0" placeholder="0" disabled></td>
<td width="28px"><a href="#" class="remove_field">
<button data-role="button" data-icon="delete" data-iconpos="notext" data-inline="true">
</button>
</a></td>
</tr>
<tr>
<td width="17%" style="min-width:3em"><input type="number" class="entryprice_class"
name="entryprice" size="5"
min="0" placeholder="0" value="100"></td>
<td style="min-width:2em"><input type="range" name="slider-fill" class="entry_percent"
value="0" placeholder="0%" min="0"
max="100"
data-highlight="true"/></td>
<td width="17%" style="min-width:3em"><input type="text" class="order_amount"
name="order_amount" size="5" min="0"
placeholder="0" length="10px" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="capital_value"
name="capital_value" size="5" min="0"
placeholder="0" disabled></td>
<td width="17%" style="min-width:3em"><input type="text" class="breakeven" name="breakeven"
size="5" min="0" placeholder="0" disabled></td>
<td width="28px"><a href="#" class="remove_field">
<button data-role="button" data-icon="delete" data-iconpos="notext" data-inline="true">
</button>
</a></td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
자바 스크립트 코드
:
$(document).ready(function() {
guiController(); // load GUI controller
views(); // load views
// ******************************** GUI CONTROLLER ******************************
function guiController() {
entriesAddDeleteController(); // watches for add or delete entry events and triggers views functions to add/delete dom
// ================ entries add/delete =================
function entriesAddDeleteController() {
// delete entry button clicked
var wrapper = $('.input_fields_wrap'); //Fields wrapper
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
e.preventDefault();
var current_row = $(this);
deleteEntry(e, current_row);
// discardElement(current_row) ;
// jQuery.removeData(current_row) ;
// $.removeData(current_row) ;
// current_row.removeData();
//purge(current_row) ;
// $.purge(current_row) ;
// $.removeData(current_row) ;
// for debugging, sum totals
entries_prices = $('.entryprice_class');
var sum_of_all_entries = 0;
// get total sum of entry prices (to calculate entries)
entries_prices.each(function() {
entry_price = parseFloat(this.value);
sum_of_all_entries = sum_of_all_entries + entry_price;
});
alert("Totals: " + sum_of_all_entries);
console.log('Total: ' + sum_of_all_entries);
});
}
}
// ************************************ VIEWS ***********************************
function views() {
// ================ delete entry ================
deleteEntry = function deleteEntry(e, current_row) {
e.preventDefault();
current_row.parent().parent().fadeOut(400, 0, function() {
current_row.remove();
});
};
}
});
이 방법은 여전히 메모리를 알고 :
그런 다음에 호출 코드를 변경? – Rhumborl
콘솔은 전후의 진입 가격 합계를 출력합니다. 합계는 변하지 않습니다. (디버깅 스크립트에서 주석 처리, // 디버깅, 합계를 참조하십시오.) – Sage