Почему глобальная переменная, захваченная в замыкании обратного вызова $ .get (), всегда содержит одно и то же значение? - PullRequest
0 голосов
/ 24 декабря 2009

У меня возникли некоторые проблемы при захвате значения глобальной переменной в моем $.get() обратном вызове:

Соответствующая разметка

<div class="block" id="blog"></div>
<div class="block" id="music"></div>
<div class="block" id="video"></div>

Соответствующий код

$('div.block').each(function() {

 $this_id = $(this).attr('id');

 alert($this_id); // outputs: blog, music, video

 $.get('test.php', {id: $this_id}, function(data) {

  alert($this_id); // outputs: blog, blog, blog (WHY?)

  $('div#' + $this_id).html(data);

 });
});

Я пытаюсь получить HTML-контент и вставить его в каждый из блоков div, но $ this_id не изменяется в вызове на $.get(). Кто-нибудь может объяснить это?

1 Ответ

0 голосов
/ 24 декабря 2009

Вы должны определить $ this_id в области действия функции, иначе она будет по умолчанию глобальной переменной.Просто измените это:

$this_id = $(this).attr('id');

на это:

var $this_id = $(this).attr('id');

Это хорошая идея, чтобы привыкнуть явно объявлять все ваши переменные в любом случае ... Намного легче отслеживатьиз них таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...