2014-01-17 3 views
2

Я хочу, чтобы удалить элемент из DOM, используя его идентификатор.remove() не удаляет элемент из DOM

HTML

<div id="no-js"> 
    Sorry for the inconvenience<br/> 
    Your browser does not support javascript or it must be disabled.<br/> 
    To access the features of our website<br/><br/> 
    Enable your javascript or upgrade to the browser that supports javascript. 
</div> 

JQuery

var x = $("#no-js"); 
console.log(x.html()); 
x.remove(); // does not remove the element from dom why? 
console.log(x.html()); // it displays html content inside it 
console.log(x.length); // results 1 
x.empty(); // removes the child elements, working as expected 
console.log(x.html()); // html content is empty 
console.log(x.length); // length is 1 

.remove() похоже не работает должным образом? Это скрипка http://jsfiddle.net/QGsza/14/

ответ

3

.remove() удаляет элемент из DOM, но все же переменная x содержит ссылку на нее, что является причиной для x.length вернуть 1

Если тест снова console.log($("#no-js").length) это даст 0, как это вызывает новый поиск Dóm и элемент уже удален

Demo: Fiddle

0

Ваш селектор является неправильным, изменения в $("#no_js"). Для получения дополнительной информации проконсультируйтесь с jQuery API

0

Полюбите что я попробовал в вас играть на скрипке, и она работает

var x = $("#no-js").html(); 
x.remove(); 
0

.remove() работы, как ожидается, удалив элемент из DOM. Вы можете проверить это следующим образом:

var x = $("#div_no_js"); 
console.log(x[0].parentNode); // returns the <body> element 
x.remove(); 
console.log(x[0].parentNode); // returns null 

Удаленные элементы все еще существуют в памяти, и они очищаются от мусора. Вы можете добавить эти элементы обратно в DOM, если у вас есть ссылка на него.

Смежные вопросы