#jquery
Вопрос:
Я могу показаться новичком, но для меня это довольно удивительно, и мне нужно знать, что происходит на самом деле.
Я сделал это:
var elem=$('#div');
elem.remove();
alert(elem.text());
Удивительно, но я все еще получаю предупреждение о содержимом элемента.
Где как, если я сделаю это
var elem=$('#div');
elem.remove();
alert( $('#div').text()); //undifined
Комментарии:
1. Вы все еще можете повторно добавить элемент в другое место в DOM; он не исчезнет навсегда, как только вы
.remove()
его создадите.2. @AKX.. Довольно интересно это знать… Если я правильно понимаю, это означает простое наличие или объявление переменной elem=$(‘#div’); уже содержит или сохраняет содержимое и данные элемента еще до использования elem.text()?
3. Да,
$()
будут выбраны элементы из DOM, и у вас будут ссылки на них.4. Большое спасибо..
Ответ №1:
В вашем первом примере вы удаляете элемент из DOM, но в вашей переменной все еще есть ссылка на него, о которой вы затем предупреждаете, что это текст.
Во втором примере вы снова удаляете элемент из DOM, а затем снова выполняете поиск в DOM элемента с идентификатором div, который не найден, возвращая, таким образом, неопределенный, когда его текст предупрежден.
Комментарии:
1. Весьма интересно это знать… Если я правильно понимаю, это означает простое наличие или объявление переменной elem=$(‘#div’); уже содержит или сохраняет содержимое и данные элемента еще до использования elem.text()?
2. Кроме того, нужно ли будет сделать elem=null;, чтобы очистить его из памяти?
3. Да, когда вы назначаете объект jQuery элемента DOM (или также собственный объект элемента DOM), у вас будет доступ ко всем его текущим свойствам. И, если вы хотите помочь в сборе мусора, вы можете установить для него значение null, если он больше не используется 😉