Это называется замыканием , к сожалению, другие ответы не содержат этого очень важного ключевого слова.Я рекомендую прочитать этот вопрос: Как работает закрытие javascript? и эта статья .
.each()
создает закрытие, .prepend()
, если вы не передаете функцию, нет, , хотя для решения вашей текущей проблемы может потребоваться функция , например:
$('#divStatus div').prepend(function() {
return $(this).attr('id'); //or this.id if you're sure it has one
});
Внутри этих замыканий this
относится к элементу в массиве, в котором вы находитесь , вне их - к любому контексту, в котором вы находитесь, например:
$(function() { //short for $(document).ready(function() {
$('#divStatus div').prepend($(this).attr('id')) //this refers to document
});
AОбъект jQuery является массивом внутри, массивом ссылок на элементы DOM, независимо от того, находит ли их селектор, добавляет вручную и т. д. Функции, выполняющие эти циклы, либо .each()
или передача функции различным другим, .prepend()
, .attr()
, .css()
и т. д. - все они создают замыкания, в которых this
относится кэлемент в массиве, в котором вы находитесь в данный момент при циклическом просмотре.
Не могу не прочитать этого вопроса и статьи , достаточной для более ясного понимания этого, возможно, я проясню и некоторые другие ваши вопросы.